Python笔记(2):多参数,全局变量与局部变量,层状作用域,函数式编程,面向对象

深入解析 Python 中的变量作用域、全局变量、局部变量与栈帧内存分析 变量的作用域是指变量在程序中可被访问的范围。局部作用域(Local Scope):在函数或代码块内部定义的变量。全局作用域(Global Scope):在函数外部定义的变量。内建作用域(Built-in Scope):Python 内置的变量(如 ​​print​​、​​len​​ 等)。嵌套作用域(Enclosing Scope):嵌套函数(嵌套的外函数)中的变量。Python 作用域遵循LEGB。 阅读详情

Collecting Parameters

参数前面加一个星号*,则参数是一个tuple
def print_params(*params):
    print params


>>> print_params(1, 2, 3)
(1, 2, 3)


如果在参数前面加上两个参数,那么就是一个字典dict
def print_params_4(x, y, z=3, *pospar, **keypar):
    print x, y, z
    print pospar
    print keypar

代码的结果如下:
>>> print_params_4(1, 2, 3, 5, 6, 7, foo=1, bar=2)
1 2 3
(5, 6, 7)
{'foo': 1, 'bar': 2}

>>> print_params_4(1, 2)
1 2 3
()
{}




星号也可以进行以上过程的逆过程
def add(x, y): return x + y
params = (1, 2)
>>> add(*params)
3

全局变量和局部变量

全局变量会被局部变量覆盖,如果还想访问全局变量,那么可以以globals()的方法来引用它
>>> def combine(parameter):
        print parameter + globals()['parameter']
...
>>> parameter = 'berry'
>>> combine('Shrub')
Shrubberry




如果在一个函数内给一个被引用的函数赋值,那么它将自动变成局部变量,如果要避免这种情况,需要声明global
>>> x = 1
>>> def change_global():
            global x
            x = x + 1
>>> change_global()
>>> x
2


NESTED SCOPES(层状作用域)

def multiplier(factor):
    def multiplyByFactor(number):
        return number*factor
    return multiplyByFactor

在某些特殊的场景下,用一个函数来“创造”其他的函数可以用这种特殊的方法:

>>> double = multiplier(2)
>>> double(5)
10
>>> triple = multiplier(3)
>>> triple(3)
9
>>>multiplier(5)(4)
20


但是这样的话,内部函数不能访问外层的域的变量,但是在python3中可以使用nonlocal来声明



Python中的函数式编程

函数式编程三个有用的东西:map filter reduce(python3中在functools模块里面)
map 和 filter函数在这个版本中并不是很有用的说,你可以用List comprehension来代替。
>>> map(str, range(10)) # Equivalent to [str(i) for i in range(10)]
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
You use filter to filter out items based on a Boolean function:
>>> def func(x):
...
return x.isalnum()
...
>>> seq = ["foo", "x41", "?!", "***"]
>>> filter(func, seq)
['foo', 'x41']
>>> [x for x in seq if x.isalnum()]
['foo', 'x41']

在这种情况下可以用lambda表达式
filter(lambda x: x.isalnum(), seq)
['foo', 'x41']


reduce函数无法被取代,它的功能是,将一个sequence的第一个元素与第二个元素进行操作,
将结果与第三个元素进行同样的操作直到所有的序列都完毕。
>>> numbers = [72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33]
>>> reduce(lambda x, y: x+y, numbers)
1161

当然如上的操作可以用sum()来代替。


Python 面向对象

私有方法,在方法名以__结尾
class Secretive:
    def __inaccessible(self):
    print "Bet you can't see me..."
    def accessible(self):
    print "The secret message is:"
    self.__inaccessible()

>>> s = Secretive()
>>> s.__inaccessible()
Traceback (most recent call last):
File "<pyshell#112>", line 1, in ?
s.__inaccessible()
AttributeError: Secretive instance has no attribute '__inaccessible'
>>> s.accessible()
The secret message is:
Bet you can't see me...


Python中类的域
每当你定义一个class,在class内部的成员变量,所有的类的实例都能访问它,比如:
class MemberCounter:
    members = 0
    def init(self):
        MemberCounter.members += 1


>>>m1 = MemberCounter()
>>>m1.init()
>>>MemberCounter.members
1
>>>m2 = MemberCounter()
>>>m2.init()
>>>MemberCounter.members
2
>>> m1.members
2
>>> m2.members
2

与函数的域类似,当你给实例中的成员赋值时,本地变量将会覆盖class域的变量:
>>> m1.members = 'Two'
>>> m1.members
'Two'
>>> m2.members
2



查看超类关系
>>> issubclass(SPAMFilter, Filter)
True
>>> issubclass(Filter, SPAMFilter)
>>> issubclass(SPAMFilter, Filter)
True
>>> issubclass(Filter, SPAMFilter)
False


查看实例关系
>>> s = SPAMFilter()
>>> isinstance(s, SPAMFilter)
True
>>> isinstance(s, Filter)
True
>>> isinstance(s, str)
False
>>> s.__class__
<class __main__.SPAMFilter at 0x1707c0>


查看是否包含某个方法
>>> hasattr(tc, 'talk')
True
>>> hasattr(tc, 'fnord')
False


查看函数是否能够被调用
>>> callable(getattr(tc, 'talk', None))
True
>>> callable(getattr(tc, 'fnord', None))
False


增加一个属性
>>> setattr(tc, 'name', 'Mr. Gumby')
>>> tc.name
'Mr. Gumby'



Python全局变量和面向对象 本文档为个人博客文档系统的备份版本、作者:小游、作者博客:[点击访问](https://xiaoyou66.com 全局变量 a = 3 def Fuc(): global a print (a) if __name__ == "__main__": print (a) 直接在函数外面申明一下就是全局变量了,如果需要访问,在函数内就需要加上global关键词。主函数就不需要。 面向对象 class Employee: #这个是构造方法 def __init__(sel. 阅读详情

相关推荐

Python中变量作用域问题——局部变量与全局变量

参考文章1:红黑联盟1,关于几种函数的简称(非原创) L:local,局部作用域,即函数中定义的变量; E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的; G:global,全局变量,就是模块级别定义的变量; B:built-in,系统固定模块里面的变量,比如int, bytearray等。 搜索变量的优先级顺序依次

ldzhangyx的博客 4411

程序猿大战Python——函数——函数的多种参数

使用关键字参数后,可以让函数更加清晰、容易使用,同时也简化了传递参数的要求,比如不需要关注参数的个数、类型和顺序。==A、不定长参数==;而当要调用函数时,可以给*args传递位置参数,给**kwargs传递关键字参数,这样显得更加方便。# show_infos(age=24,name="张三",gender="女") # 报错。通常情况下,不定长参数用于在不确定调用函数时,要传递多少个参数的场景,当然也可以不传递参数。函数名(值1, 值2, 值3, ... 参数1=值, 参数2=值,...)

weixin_65694308的博客 1261

Python编程实战 - 函数与模块化编程 - 局部变量与全局变量

分类定义位置生效范围生命周期局部变量函数内部仅函数内有效函数结束后销毁全局变量函数外部整个程序有效程序运行期间一直存在nonlocal 变量外层函数作用域内外层函数共享外层函数存在期间。

tenkofx的博客 830

局部变量和全局变量的作用域

局部变量:在函数内部定义的变量,只在函数内部起作用,函数执行结束,变量会自动删除 即在一个函数内部定义的变量,只在本函数范围内有效 全局变量:“在函数外定义的变量”,即从定义变量的位置到本源文件结束都有效   当有外部变量时,main函数中的同名变量就是全局变量。如果没有外部变量,main函数里的变量依然是局部变量 目的:增加函数间数据联系的渠道。由于同一文件中的所有函数都能引用全局变量的值 因...

ymeng9527的博客 1万+

从局部变量和全局变量开始全面解析Python中变量的作用域

无论是以类为基础的面相对象编程,还是单纯函数内部变量的定义,变量的作用域始终是Python学习中一个必须理解掌握的环节,下面我们从局部变量和全局变量开始全面解析Python中变量的作用域,需要的朋友可以参考下 理解全局变量和局部变量 1.定义的函数内部的变量名如果是第一次出现, 且在=符号前,那么就可以认为是被定义为局部变量。在这种情况下,不论全局变量中是否用到该变量名,函数中使用的都是局部变量。...

python入门教程 1028

详解python的全局变量与局部变量(global&nonlocal&locals)

本文主要介绍了python的全局变量与局部变量(global&nonlocal&locals),希望能对学习Python的同学们有所帮助。 文章目录 0. 序言 1. 局部作用域 2. 全局变量 3. nonlocal 4. locals 5. 小结 6. 深度思考

weixin_43178406的博客 1万+

python中全局变量的含义_python中的全局变量用法分析

本文实例分析了python中的全局变量用法。分享给大家供大家参考。具体分析如下:Python是一种面向对象的开发语言,在函数中使用全局变量,一般应作全局变量说明,只有在函数内经过说明的全局变量才能使用,这里就来介绍下Python全局变量有关问题。首先应该说明的是需要尽量避免使用Python全局变量。不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性。对全局变量,如果程序员甲修改了_...

weixin_32825955的博客 795

气象数据收集

国家气象信息中心-中国气象数据网 (cma.cn)国家气象信息中心-中国气象数据网 (cma.cn)预报数据:需要定制,收费10万+路面数据同化系统,实时。

weixin_42209537的博客 3487

python中全局变量与局部变量

python中全局变量与局部变量 标签: python 局部变量就是定义在一个函数体内部的变量 全局变量是定义在外面的变量 比如: a = 1 def f(): b = 2 其中a就是全局变量,而b是局部变量。局部变量只在函数体内部有效,出了函数体,外面是访问不到的,而全局变量则对下面的代码都有效。 在函数体内部使用全局变量 全局变量可以直接在函数体内容部使用的,你可以直接访问,...

CoderWangSon 18万+

大模型时代的具身智能系列专题(二)

自由形式语言指令 L 指定了一个操作问题,例如“打开最顶部的抽屉”。然而,根据 L 生成机器人轨迹是很困难的,因为 L 可能具有任意长度,或者是不明确的(例如,需要上下文语义)。相反,我们专注于问题的各个阶段(子任务)l_i,它们明确地指定了一个操作任务 (例如,“抓住抽屉把手”,“打开抽屉”),其中被分解的子阶段(子任务)L→l1l2lnL→l1​l2​...ln​由高级规划器(例如,一个LLM或一个基于搜索的规划器)给出。

achao的专栏 2171

jane street market prediction 冠军方案 奇巧淫技与topline链接整理(3/3)

目录前言将income 作为loss(优化目标)读取数据,定义优化目标模型训练与微调提交结果多目标学习Topline整理AE+MLP (rank10)Current 17th solution: Ensembles of deep (49 layer) MLPsmixup augmentation: a way to learn from trades with weight=0 (rank4)My (perhaps) over-complicated LSTM solutionCurrent 62nd .

weixin_51484067的博客 2639

终于弄懂了Python变量的作用域:局部变量与全局变量

换句话说,局部变量只能在函数的代码块内被访问和修改,函数外部不能访问和更改这些变量。通过合理使用局部变量和全局变量,我们能够有效管理数据的访问范围和生命周期,减少程序中的错误,并提高代码的可读性和可维护性。理解变量的作用域,特别是局部变量和全局变量之间的差异,对编写清晰、易于维护的代码至关重要。:局部变量的作用范围有限,不容易产生副作用,因此尽量在函数内部使用局部变量,以避免不必要的错误和混乱。局部变量和全局变量的作用域和生命周期有显著的区别,理解它们之间的差异有助于在编程中做出更合理的决策。

分享人工智能领域原创文章 2036

产品失效你必须要知道的概念---MTBF、MTTF和FIT

如果我们想知道该电路在10年后仍能正常工作的几率,按照前面例子的相同计算步骤,结果将是90.3%。例如,假设一个TDK电容器的MTBF为6918年(16.5失效时间间隔,FIT),这并不意味着该电容器能持续这么久(显然,没有人能够对部件进行这么长时间的测试)。综上,MTBF和MTTF是用来描述系统或设备级别的故障间隔时间,而FIT是用来描述某单一器件的失效率的单位。MTBF和MTTF使用相同的计算方法,但MTBF用于可维修的产品,而MTTF用于不可维修或维修成本过高的产品。

weixin_49761275的博客 3834

Python函数:作用域(局部变量和全局变量)③

在Python编程中,理解变量的作用域是至关重要的。变量的作用域决定了变量的可访问性和生命周期。本文将深入探讨Python中局部变量和全局变量的概念、它们的区别、使用场景以及在函数中如何正确使用这两类变量。为了更好地理解这些概念,我们将提供详细的解释和代码示例,并在最后附上一个综合详细的例子。作用域(scope)指的是变量在代码中的可见范围。局部作用域(Local Scope):函数内部定义的变量,其作用范围仅限于函数内部。封闭作用域(Enclosing Scope)

结合项目案例,记录点点滴滴,自己回顾,分享他人o__o 7015

2024高校网络安全管理运维赛题目--复现+题目+wp

官方writeup集思广益比较好的备份。

书山有路勤为径,学海无涯苦作舟 1323

PLC1200使用CB1241RS485通讯模块做从站进行Modbus Rtu通信

添加新设备(PLC)->设备和网络管理->点击PLC->看到硬件目录选择通信板->点到点->CB1241(RS485)->看到6ES7241-1CH30-1XB0选择添加,如图。指向Modbus保持寄存器数据块的指针 我这里指向了自定义的DB块数据中一个INT数组。在通信->通信处理模块->MODBUS(选择不带RTU的通信指令块)注意:接线时,TRA接485调试模块的B- TRB接调试模块的A+组态后的硬件标识符 270 对应自己组态后自动生成的。1:事务完成,且无任何错误。波特率对应自己使用的。

swmyaopeng的博客 2万+

Python函数:作用域(局部变量和全局变量)

在Python编程中,理解变量的作用域是至关重要的。变量的作用域决定了变量的可访问性和生命周期!

zhang120529的博客 2206

unity6000.0.3版本URP下ScriptableRendererFeature如何实现一张自定义贴图效果?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 584

变量的作用域:全局变量 vs 局部变量——编程思维的核心与实践智慧

变量是程序世界的“容器”,承载着数据与状态的流转与变换。变量的“作用域”则定义了数据的生命周期与可见范围,是理解程序结构、调试代码和优化性能的基石。全局变量与局部变量,这对看似简单的概念,却深刻影响着软件的设计质量、代码的可维护性以及程序的执行效率。 本文将从理论与实战角度深刻剖析变量作用域的本质,探讨全局变量和局部变量的优势与风险,结合Python语言环境提供专业见解和实践建议,帮助您掌握变量作用域的艺术,提升编程境界。

测试者家园 1499

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Python中的全局变量和局部变量详解

总结全局变量和局部变量在Python中的区别至关重要。全局变量在整个程序中可被访问,而局部变量仅在其定义的函数内部可见。这种区别涉及作用域和访问权限,影响程序的结构和灵活性。同时,对于避免命名冲突和程序逻辑的清晰性也至关重要。合理使用全局变量和局部变量可以提高代码的可读性和维护性。同时,对于嵌套函数中局部变量的修改,nonlocal关键字在修改外层函数的变量值时是非常有用的。通过理解这些概念,能够更好地利用Python的强大功能和灵活性,写出更加优雅和健壮的代码。

z099164的博客 3608

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

函数---全局变量和局部变量及作用域

  全局变量 在函数外,一开始被赋予变量值,可以被所有函数使用的变量,作用域为全局,称为全局变量 局部变量 在函数内部,只能在函数内使用,称为局部变量 举例 name = "lian"#全局变量 def call(): name = "zong"# 局部变量 print(name) #输出『zong』 print(name)#输出『lian』 若想在函数...

Lzs1998的博客 1794

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

python变量详解(四)___变量的作用域(局部变量、全局变量、非局部变量)

 python变量详解(四) ___变量的作用域(局部变量、全局变量、非局部变量)

逆境清醒的博客 1334

python局部变量与全局变量

python 局部变量与全局变量,global

weixin_42576837的博客 2722
上一篇: Python 笔记(1)input与raw_input
下一篇: Python笔记(3)异常处理
邓谦DQ
博客等级 码龄19年 14粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值