Python函数中作用域教程

点餐系统数据库设计--SQL Server 友情链接 1、学生成绩管理系统数据库设计–MySQL 学生成绩管理系统数据库设计–MySQL 2、医疗信息管理系统数据库–MySQL 医疗信息管理系统数据库–MySQL 3、邮件管理数据库设计–MySQL 邮件管理数据库设计–MySQL 4、SQL Server医疗信息管理系统数据库【英文版-源码】–(Medical Management System Database) SQL Server医疗信息管理系统数据库【英文版-源码】–(Medical Management System Database) 5 阅读详情

本地全局

>>> a = 1
 
>>> def add(y,z):
 
...    print(y+z+a)
...    return y+z+a
...
>>> add(1,2)
4
4
>>> 
  • 因为这个a是在这个文件内最外层注册的变量名,所以他是全局变量
  • 全局变量能够在函数内部直接使用,而不需要特定的声明
  • 全局变量的生命周期:在整个程序运行期间。

本地变量名:y,z

  • y和z的注册地址在函数内部,y和z是局部变量
  • 局部变量生命周期:函数运行期间
  • 局部的同名变量优先级高于全局的,如果局部没有这个变量,会尝试从上一级作用域空间查找同名变量
>>> a = 1
>>> def change():
...     a = 2
...     print(a)
...
>>> a
1
>>> change() #打印函数内部修改之后的a
2
>>> a #打印外部a
1

外部的a并没有被修改

  • 这是因为,函数内部赋值的变量除非声明为全局变量或非本地变量,否则均为本地变量
  • 这里的a = 2,因为是在函数内部使用赋值的,所以解释器会把它当作一个函数内部的变量,他的作用域是这个函数内部
  • 如果想修改一个全局变量,只需要在函数内部被修改变量前加global语句

函数传参需要注意的地方

函数传参:

  • 可变对象作为参数传递,可以在函数内部直接修改初始数据对象的值。
  • 不可变对象传递时,无法直接修改初始全局数据对象的值,是在局部添加新得同名变量赋值,不会影响全局同名变量对象,要想修改全局变量对象只需要在函数内部被修改变量前加global语句

传递一个不可变对象,按值传递:

>>> a = 1
>>> def change():
...     a = 2
...     print(a)
...
>>> change()
2
>>> a
1 

可以看到不可变数据传递时:加上blobal就可以修改全局变量对象。

>>> a = 1
>>> def change():
...     global a
...     a = 2
...     print(a)
...
>>> a
1
>>> change()
2
>>> a
2

传递一个可变对象(列表,字典,集合),按引用传递:

>>> a = [1,2,3]
>>> def change():
...     a[0] = 'a'
...     print(a)
...
>>> a
[1, 2, 3]
>>> change()
['a', 2, 3]
>>> a
['a', 2, 3]
#可变对象作为参数传递,传的是引用,内部修改影响全局
  • 从下面代码中就可以看出局部的同名变量优先级高于全局的,如果局部没有这个变量,会尝试从上一级作用域空间查找同名变量,如果有则不会修改全局同名变量
>>> a = [1]
>>> def change():
...     a = [1,2,3]
...     a[0] = 'a'
...     print('内',a)
...
>>> a
[1]
>>> change()
内 ['a', 2, 3]
>>> a
[1]
>>>
  • 可变数据在函数内部和全局下,直接修改,其实是一个,不可变数据在函数内部和全局下,同名是不一样的,
>>> changed = [1,2,3]
>>> unchanged = '123'
>>> def func():
...     changed[0] = 'a'
...     print('内:',changed)
...
>>> def func1():
...     unchanged = 'zhangan'
...     print('内:',unchanged)
...
>>> func()
内: ['a', 2, 3]
>>> func1()
内: zhangan
>>> changed
['a', 2, 3]
>>> unchanged
'123'
>>>`
  • 不管是可变不可变,只要是等号赋值,不是修改,都是创建了一个新的同名局部变量 (一般在编写代码的时候局部变量最好不要更全局变量同名)
>>> changed = [1,2,3]
>>> unchanged = '123'
>>> def func():
...     changed = ['a','b','c']
...     print('内:',changed)
...
>>> def func1():
...     unchanged = 'zhangan'
...     print('内:',unchanged)
...
>>> func()
内: ['a', 'b', 'c']
>>> func1()
内: zhangan
>>> changed
[1, 2, 3]
>>> unchanged
'123'
>>>
a = [1,2,3,[5,6]]
b = 'abc'

def func(c,d):
    c[3][0] = 'a'
    a = 'abccasdaskjldhaskjldsakdah' #创建了个新的
    global b
    b = 'adsadadsadsadasdasdqweqhkjashckjas' #直接赋值 就是创建的新的
    print('内:',c)
    print('内:',d)
    print('内:',a)
    print('内:',b)
func(a,b)
print('外:',a)
print('外:',b)

输出结果为:

内: [1, 2, 3, ['a', 6]]
内: abc
内: abccasdaskjldhaskjldsakdah
内: adsadadsadsadasdasdqweqhkjashckjas
外: [1, 2, 3, ['a', 6]]
外: adsadadsadsadasdasdqweqhkjashckjas
思维链:让AI更接近人类思维的技术 本文将探讨一种名为“思维链”的技术,它旨在让AI更接近人类思维。文章首先介绍了问题背景与核心概念,接着讲解了算法原理和数学模型,随后阐述了系统分析与架构设计,最后通过项目实战展示了思维链的实际应用,并提供了最佳实践和小结。思维链是一种旨在模拟人类思维过程的技术,它通过构建一系列相互关联的思维方式,实现对复杂问题的分析和解决。思维链算法是一种基于人类思维过程的人工智能算法,它通过构建一系列思维链,实现对问题的分析和解决。智能问答系统是一种常见的人工智能应用,它能够回答用户提出的各种问题。 阅读详情

相关推荐

生态学家都在用的MixSIAR:用R语言搞定稳定同位素混合模型(从数据整理到结果解读)

本文详细介绍了生态学家常用的MixSIAR工具,通过R语言实现稳定同位素混合模型分析,从数据整理到结果解读全流程。文章涵盖环境准备、模型构建、参数设置、运行诊断及可视化等关键步骤,帮助研究者科学分析河口鱼类食物来源,适用于生态学研究和湿地保护政策制定。

weixin_28683065的博客 437

python——作用域

python的作用域和命名空间,高阶函数介绍

qq_34683631的博客 3849

宝塔面板添加站点及运营商SSL免费证书的申请与使用

本文详细介绍在宝塔面板下如何正确添加站点、配置站点,及在运营商如何申请免费SSL证书,将其配置到宝塔站点里。 给你的网站加一把锁,教你免费SSL证书申请,配置到自己的网站中。 环境:Ubuntu server 18 工具:宝塔控制面板 平台:阿里云 Web服务器:Nginx 宝塔:https://www.bt.cn/ 阿里云:https://www.aliyun.com/ 腾讯云:https://cloud.tencent.com/ 要求: 1.宝塔控制面板搭建完毕。 2掌握域名解析的原理。 3.了解ht

贺兰山长老 5056

Python函数作用域教程

1.作用域介绍 python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量; E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的; G:globa,全局变量,就是模块级别定义的变量; B:built-in,系统固定模块里面的变量,比如int, bytearray等。 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB。 x = int(2.9) # in

Python热爱者的博客 450

数字IC后端层次化Hierarchical Flow子系统Sub-System模块 block partition和pin assignment细节盘点

数字IC后端培训教程之Hierarchical Flow子系统block partition和pin assignment详细教程

weixin_37584728的博客 1603

请叫我鱼拆,2024扫地机器人的第一次拆机

从背面可以看出,这个机器人是两轮差速模型,两个驱动轮,一个万向轮,驱动轮位于机器人中心位置,这样原地旋转的圆心就是机器人的中心。可以看到设备已经连接,但是没有办法进shell,厂家应该有做了安全保护之类的,有知道从这个口可以登录系统办法的小伙伴可以后台留言。但这台机器人一直报警说,机器人轮子离地,小鱼 估计是防跌落模块有问题,误触发了,所以打算先拆机看看。接着小鱼试了下,机器可以开机,然后给他重新配置wifi,连上 米家。Allwinner,全志的片子,不知道哪个型号的,看产品id,应该支持adb。

生活不止眼前的苟且 3924

python基础教程:函数作用域

在python中,一个函数就是一个作用域 name = 'xiaoming' def change_name(): name = 'sthu' print('在change_name里的name:',name) change_name() # 调用函数 print("在外面的name:",name) 运行结果如下: 在change_name里的name: sthu 在外面的name: xiaoming 我们再试一下在嵌套函数中是如何的寻找的? age = 15 def func()

Python热爱者的博客 328

FastAPI 高级特性:同异步路由函数、依赖注入与后台任务

在现代 Web 开发中,高效的性能和简洁的代码结构是至关重要的。FastAPI 作为一个现代、快速(高性能)的 Web 框架,凭借其对异步编程的原生支持和直观的依赖注入系统,迅速成为开发者的热门选择。在本文中,将深入探讨 `FastAPI` 中的几个核心概念:同异步函数的区别、`Depends` 依赖以及后台任务。

qq_43629857的博客 203

Python教程:作用域与嵌套函数

一、全局变量与局部变量 在函数中定义的变量为局部变量,在程序中一开始定义的变量为全局变量; 全局变量作用域是整个程序,局部变量作用域是定义该变量的函数; 当全局变量与局部变量同名时,在定义局部变量的函数内,局部变量起作用,在其他地方,全局变量起作用。 name = 'xxr' def change(): name = 'vivian' print(name) print(name) change() #输出 ''' xxr vivian ''' 二、嵌套函数 在函数里面还可以定义函数

Python热爱者的博客 469

cesium vue2/vue3教程目录导航

以下是本专栏目录导航,送完整项目源码(拒绝单页源码),可以直接运行,全部配置免费视频教程(B站)。

qq_29384639的博客 4312

最新Python爬虫实战(入门爬虫篇)——案例7:电影网站电影数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过Python爬虫技术,成功实现了对某电影网站Top250多页电影详细信息的批量爬取与Excel保存。代码采用模块化设计,包含分页请求构造、XPath+正则提取结构化信息、Excel数据持久化保存等完整流程。通过配置User-Agent等请求头信息,有效模拟浏览器行为以绕过豆瓣基础反爬策略。整个爬虫逻辑遵循"分页遍历 → 请求页面 → 解析HTML → 提取电影信息 → 保存到Excel"的标准流程,与主流静态网站爬取范式高度一致。

努力让自己发光,对的人才能迎着光而来 11万+

【Python基础教程】第四章:函数与作用域

摘要:本文深入讲解Python函数与作用域知识,先阐述函数定义、文档字符串书写规范,再剖析位置、关键字、默认及可变参数的传递机制,并引入lambda匿名函数用于排序。以递归计算斐波那契数列为例展现函数应用,同时详细介绍局部、全局作用域,global关键字及闭包概念。通过基础与进阶练习题巩固知识,借助清晰可视化流程图展示递归函数与闭包函数调用逻辑,助力读者掌握Python函数核心要点。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1259

爬虫实战:拆解WASM加密参数,破局2026电商动态接口反爬(实测某头部电商可用)

sign和wasm_token,而且每次请求这两个参数都在动态变化。用常规的参数拼接、MD5加密尝试还原,结果全是403;反编译前端JS,发现核心加密逻辑被打包成了.wasm,把关键参数加密、签名逻辑藏在二进制模块里,让爬虫无法直接逆向JS拿到加密规则。前后折腾了5天,从WASM文件解析、JS与WASM交互逻辑拆解,到本地还原加密参数、实战验证,踩了无数坑(比如WASM版本不兼容、内存数据读取失败、加密依赖环境缺失),最终成功还原了加密流程,稳定爬取商品详情、价格、销量等核心数据,连续运行72小时无封禁。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1909

Python教程,函数的返回值和作用域,助你学以致用,一步起飞

前言 Python函数的学习内容,咱们更新了很多,今天我们继续带来Python函数的返回值和作用域,深化大家的函数理解,如果有什么不准确的地方,请大佬批评指正,咱们共同进步。 Python函数的返回值 1.return语句 函数返回值的定义:函数里面的return语句 + 值,表示函数的返回值,可以在调用函数之后通过变量进行接收。 不带参数值的return语句返回None。 举例,自定义一个相加函数,返回最后的值: def add_plus(a,b): '''添加 ''' c =..

python6_quanzhan的博客 1114

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Python3教程:作用域与嵌套函数

Python3教程:作用域与嵌套函数

Python热爱者的博客 372

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python教程(六)之函数(4.作用域)

作用域是什么,简单理解就是变量或是函数能够起作用的范围 a=1 def fn_a(n) : a=n return a print(a,fn_a(2)) #1 2 #可以看到,函数里的a并没有影响全局变量的a的值 scope=vars() print(scope["a"]) #1 #vars()是python中的命名空间或作用域,用这种方法可以查出某个变量的值 #一共有多少作用域?除了全局作用域,每一个函数都有一个作用域 #实际上我们是可以在函数中访问全局变量的,直接使用即可 b="h

由浅入深? 225

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【Python使用】嘿马python基础入门全体系教程第8篇:变量作用域,函数返回值(一),函数的文档说明【附代码文档】

1.Python函数高级特性包括匿名函数(lambda语法格式、与普通函数区别、应用场景、参数形式)。2. 文件操作涵盖文件打开关闭、文件读写(write写数据、readlines读数据)。3. 面向对象编程包括类和对象(类定义、对象创建、类对象关系)、类构成、self关键字、对象属性操作、构造方法__init__、字符串方法__str__、多继承、子类重写、多态概念及应用、类属性和实例属性、静态方法和类方法。4. 异常处理涵盖异常传递(try嵌套、函数嵌套调用)、自定义异常抛出。5. 模块系统包括Pyth

yinuo_432的博客 939

【Python使用】嘿马python基础入门全体系教程第7篇:变量作用域,函数介绍【附代码文档】...

本教程的知识点为:计算机组成 计算机是由什么组成的? 1. 硬件系统: 2. 软件系统: 目标 运算符的分类 1. 算数运算符 2. 赋值运算符 3. 复合赋值运算符 判断语句和循环语句 if嵌套 1. if嵌套的格式 2. if嵌套的应用 if嵌套执行流程 容器:字符串、列表、元组、字典 字符串介绍 一. 认识字符串 ...

weixin_36887097的博客 108

Python基础教程,第七讲,函数 作用域 传参

转眼间这也是我写的第七篇文章了,自媒体确实是个好东西,不断的鼓励我持续更新,持续的学习,最近也发现了一些问题,就是代码在公众号和其他平台排版不利于读者阅读,尤其是大鱼和头条,说实话自己写的自己都没有看下去的兴趣,所以我想试着改变一下,代码在markdown排好版以后截图在其他工具中处理注释,这样大家可以更加直观的看到每条代码甚至某个参数的作用,希望可以让读者看到图片不用过多的看无用的代码,便可以知...

weixin_33807284的博客 85

Python 极简教程(十九)函数(3)变量作用域

谈函数不得不谈有一下变量的作用域。因为所谓的变量作用域是对于函数而言的。如果你整个文件的代码没有任何函数,那么都是同一个作用域,但是如果有函数,那么就有了作用域的概念了。 在 Python 中主要的变量作用域有两种: 全局作用域,定义在函数外部的变量,其作用范围对于整个文件来说是全局的; 局部作用域,定义在函数内部的变量,其作用范围只对该函数有效,在函数以外不能使用该变量。 全局变量和局部变量...

小满测试 191

函数传参字典_Python基础教程,第七讲,函数 作用域 传参

转眼间这也是我写的第七篇文章了,自媒体确实是个好东西,不断的鼓励我持续更新,持续的学习,最近也发现了一些问题,就是代码在公众号和其他平台排版不利于读者阅读,尤其是大鱼和头条,说实话自己写的自己都没有看下去的兴趣,所以我想试着改变一下,代码在markdown排好版以后截图在其他工具中处理注释,这样大家可以更加直观的看到每条代码甚至某个参数的作用,希望可以让读者看到图片不用过多的看无用的代码,便可以知...

weixin_29732787的博客 106

Python3 菜鸟教程 笔记6 -- 函数、命名空间和作用域

$ 函数 @ python 函数的参数传递 不可变(immutable)类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。 可变(mutable)类型:类似 c++ 的引用传递,如 列表,字典。如 fun(a),将a真正的传过去,修改后函数外部的a也会受影响。 python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说...

皮卡丘在充电 297

函数传参字典_Python基础教程,第七讲,Python函数、作用域、传参

转眼间这也是我写的第七篇文章了,自媒体确实是个好东西,不断的鼓励我持续更新,持续的学习,最近也发现了一些问题,就是代码在公众号和其他平台排版不利于读者阅读,尤其是大鱼和头条,说实话自己写的自己都没有看下去的兴趣,所以我想试着改变一下,代码在markdown排好版以后截图在其他工具中处理注释,这样大家可以更加直观的看到每条代码甚至某个参数的作用,希望可以让读者看到图片不用过多的看无用的代码,便可以知...

weixin_42349978的博客 110

站长在线零基础Python完全自学教程23:函数的返回值、作用域和匿名函数

导读:欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第23课《函数的返回值、作用域和匿名函数》。本文是一个大课程分成了下面4节小课程:Python中函数的返回值、Python函数中的局部变量、Python函数中的全局变量、Python函数中的匿名函数等内容。

站长在线在优快云 697

Python基础教程--抽象,函数,参数,递归,作用域

1.懒惰即美德 不要在每次需要的时候都把代码重写一遍 2.抽象和结构 3.创建函数 内建函数callable函数可用来判断函数是否可调用 >>>import math >>> x = 1 >>> y = math.sqrt >>> callable(x)            False >>> callable(y)            True 函数callable在py

u013240812的专栏 721

python变量作用域教程_Python3 开发入门 —— 第十一讲_3(函数详解-变量作用域)...

变量作用域Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python的作用域一共有4中,分别是:L (Local) 局部作用域E (Enclosing) 闭包函数外的函数中G (Global) 全局作用域B (Built-in) 内建作用域以 L –> E –> G –>...

weixin_32019373的博客 173
上一篇: python中os模块和sys模块
下一篇: 关于python的内置堆
Python程序u猿
博客等级 码龄5年 622粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值