欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

day 0314函数的进阶

发布时间:2025/7/25 54 豆豆
生活随笔 收集整理的这篇文章主要介绍了 day 0314函数的进阶 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1.空间:内置空间,全局空间,局部空间。

内置空间:空间存放python解释器,为我们提供了方便的名字:input,print,str,list,tuple

三个空间的加载顺序:

内置空间》》全局空间》》局部空间

三个空间的取值顺序:

局部调用:局部空间》》全局空间》》内置空间

全局调用:全局空间》》内置空间

作用域:

全局作用域:包含内置空间,全局空间,在整个文件的任意位置都能被引用,全局有效。

局部作用域:局部空间内有效。

2.函数参数--动态参数

2.1动态接收位置参数:

参数位置用*表示接受任意参数

*表示一种聚合。

def fun(*args): print('张学友的歌曲:',args) #收到的结果是一个元祖。( ,) fun('李兰香','饿狼传说','心如刀割','我等到花儿也谢了') 结果; 张学友的歌曲: ('李兰香', '饿狼传说', '心如刀割', '我等到花儿也谢了')

2.1.1.注意:动态接收参数时--动态参数必须在位置参数的后面。

def fun(*args,a,b): #动态参数在位置参数前面,聚合后位置参数世界收不到数据 print(args,a,b) fun(1,2,3,4,55) TypeError: fun() missing 2 required keyword-only arguments: 'a' and 'b'

正确的输入是  动态参数在位置参数的后面:

def fun(a,b,*args): #动态参数在位置参数后面。 print(args,a,b) fun(1,2,3,4,55) 结果: (3, 4, 55) 1 2 #args以元组的形式输出,a=1,b=2

2.1.2 带有默认值的参数的位置问题:

   默认值写在动态参数前面,默认值不生效

# 默认值写在动态参数前面,结果不生效 def fun(a,b,c='All falls down',*args): print(a,b,c,args) fun(1,2,3,4,5,6,'ada lace') 结果: 1 2 3 (4, 5, 6, 'ada lace') #实际上默认值All falls down没有打印出来

  

   默认值写在动态参数后面,默认值生效

# 默认值在位置参数后面,结果生效 def fun(a,b,*args,c='All falls down'): print(a,b,c,args) fun(1,2,3,4,5,6,'ada lace') 结果: 1 2 All falls down (3, 4, 5, 6, 'ada lace')

  注意:形参的顺序:位置参数》》动态参数》》默认参数

     *args  **kwargs 程序员约定习惯

3.动态接收关键字参数

*无法接收关键字参数。

#动态关键字接收参数最后会生成一个字典形式 def fun(**kwargs): print(kwargs) fun(a=11,b=[1,True],c='ad',d={1,2}) 结果: {'a': 11, 'b': [1, True], 'c': 'ad', 'd': {1, 2}}

顺序:位置参数》》*args(动态位置参数)》》默认值参数》》**kwargs

def fun(*args,**kwargs): print(args,kwargs) fun(1,['ada lace',123],'lace',{"k1":1},a='TROUBLE',b=123,c=[11,22,3]) 结果: (1, ['ada lace', 123], 'lace', {'k1': 1}) {'a': 'TROUBLE', 'b': 123, 'c': [11, 22, 3]}

例如:

def fun(a,b,*args,c='JOKER',**kwargs): print(args,kwargs) fun(1,2,['ada lace',123],'lace',{"k1":1},d='TROUBLE',e=123,f=[11,22,3]) 结果: (['ada lace', 123], 'lace', {'k1': 1}) {'d': 'TROUBLE', 'e': 123, 'f': [11, 22, 3]}

4.函数的注释:

函数注释用"""    """

在外部查看函数的注释 函数名.    _doc_

5.global,  nonlocal

global 表示不再使用局部作用域的内容,而改用全局作用域

global只限定于字符串和数字。

注:对于可变的数据类型(list,dict,set),可以直接引用,不用通过global。

a=100 def fun(): global aprint(a) fun() print(a)

可变的数据类型:

li=[11,22,33] def fun(): li.append('Tro')print(li) fun() 结果: [11, 22, 33, 'Tro']

nonlocal:

1,不能修改全局变量。

2,在局部作用域中,对父级作用域(或者更外层作用域非全局作用域)的变量进行引用和修改,并且引用的哪层,从那层及以下此变量全部发生改变。

a=10 def fun(): a=20 def fun1(): nonlocal a a=83 print(a) fun1() print(a) fun() 结果: 83 83 a=10 def fun(): a=20 def fun1(): a=83 print(a)fun1() print(a) fun() 结果: 83 20

  

 

转载于:https://www.cnblogs.com/Zhao159461/p/10532955.html

总结

以上是生活随笔为你收集整理的day 0314函数的进阶的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。