python基础十,,一、动态参数:*ar
python基础十,,一、动态参数:*ar
一、动态参数:*args **kwargs
形态角度:
最终顺序:位置参数,*args,默认参数,**kwargs
# def func(*args):# print(args)# func(1,2,3,4,5,7,8,9,1,2,3,4,5,6,7,8)#*args 动态参数,万能参数#args接受的就是实参对应的 所有位置参数,并将其放在元组中。#形参对应顺序:#位置参数,*args,默认参数# def func(a,b,c,d,*args,e=‘男‘):# print(a)# print(b)# print(c)# print(d)# print(args)# print(e)# func(1,2,3,4,5,6,7,e=‘女‘)#**kwargs 动态传参,他将所有的关键字参数(无意义的)放到一个字典中。# def func(a,b,c,**kwargs):# print(kwargs)# func(1,2,r=4,b1=5,c1=6,c=7,)# def func(a,b,c,d,*args,e=‘男‘,**kwargs):# print(a)# print(b)# print(c)# print(d)# print(args)# print(e)# print(kwargs)# func(1,2,3,4,5,6,7,v=3,m=7,h=9,e=‘女‘)# 最终顺序:位置参数,*args,默认参数,**kwargs# def func1(*args,**kwargs):# pass# func1()# * 魔法运用# def func(*args):# print(args) #(1,2,30,1,2,33.。。。。。)# l1 = [1,2,30]# l2 = [1,2,33,21,45,66]# tu = (1,2,3)# func(1,2,30,1,2,33,21,45,66)# func(*‘qweqrfdsaf‘)# func(*{‘name‘:‘alex‘,"age":12})# func(*l1,*l2)# def func(*args):# print(args)# func(1,2,3,10,20,80)# def func(**kwargs):# print(kwargs)## dic1 = {‘name1‘:‘alex‘,‘age1‘:46}# dic2 = {‘name‘:‘老男孩‘,‘age‘:56}# func(**dic1,**dic2)# 在函数的调用执行时,# *可迭代对象,代表打散(list,tuple,str,dict(键))将元素一一添加到args。# **字典,代表打散,将所有键值对放到一个kwargs字典里。# 在函数定义时, *args,**kwargs代表的是聚合。# def func(*args,**kwargs):# print(args)# print(kwargs)## dic1 = {‘name1‘:‘alex‘,‘age1‘:46}# dic2 = {‘name‘:‘老男孩‘,‘age‘:56}# func(*[1,2,3,4],*‘asdfsad‘,**dic1,**dic2)# def func(*args,**kwargs): #args = (1,2,3,4) #kwargs = {‘age‘: 56, ‘name‘: ‘老男孩‘} # print(*args) # print(**kwargs) #(age = 56 ,name = 老男孩)# dic1 = {‘name1‘:‘alex‘,‘age1‘:46}# dic2 = {‘name‘:‘老男孩‘,‘age‘:56}# # func(*[1,2,3,4],*‘asdfsad‘,**dic1,**dic2)# func(**dic2)
二、名称空间(命名空间),临时名称空间,内置名称空间。
执行函数的时候,他会在内存中开辟一个临时名称空间,存放函数体内的所有变量与值得关系。
随之函数的执行完毕,临时空间自动关闭。
全局名称空间,名称空间,命名空间,全局命名空间。
局部命名空间,临时名称空间,临时命名空间,局部名称空间。
内置名称空间,所有的内置函数等存储的空间。
加载顺序:
内置名称空间 ---》全局名称空间--》(函数执行时)局部名称空间。
取值顺序:
函数执行时:局部名称空间--》全局名称空间--》内置名称空间。
# a = 4# b = 3# c = [1,2,3,4]# c1 = {‘name‘:‘alex‘}## def func1():# name = ‘老男孩‘# print(name)# func1()#当执行函数的时候,他会在内存中开辟一个临时名称空间,存放函数体内的所有变量与值的关系,# 随着函数的执行完毕,临时空间自动关闭。#input(),print(),len 内置函数# name = ‘老男孩‘# def func1():# name = ‘taibai‘# print(name)# func1()# def my_len(argv):# return 666# print(len([12,3,]))a = 2print(a)def func1(): age = 11 print(age)func1()
三、全局作用域,局部作用域。
全局作用域:全局名称空间,内置名称空间。
局部作用域:局部名称空间
四、加载顺序与取值顺序,函数的嵌套
# 函数什么时候执行? 函数调用的时候执行。# 代码从上至下依次执行, 调用函数:函数里面从上至下依次执行。# print(111)# def func1():# print(333)## def func2():# print(444)## def func3():# print(555)# func2()## func1()# print(222)# 111 333 222# print(111)# def func1():# print(333)# func2()# print(666)## def func2():# print(444)## def func3():# print(555)## func1()# print(222)# 111 333 444 666 222# print(111)# def func1():# print(333)# func2()# print(666)## def func2():# print(444)# func3()## def func3():# print(555)## func1()# print(222)# 111 333 444 555 666 222# a = 2# b = 3# def func1():# c = 5# d = 6# print(globals()) # 全局变量放在一个字典中# return locals() # {‘c‘: 5, ‘d‘: 6}# print(func1())# print(globals()) # 全局名称空间:所有变量# print(locals()) # 局部名称空间:所有变量
五、locals(),golbals(),nolocal,golbal
#global# 1,在局部空间内,声明一个全局变量# def func1():# global name# name = ‘老男孩‘# print(name)# func1()# print(name)# 2,在局部空间内改变一个全局变量# a = 4# def func1():# global a# a = 5# # print(name)# func1()# print(a)#nonlocal# 1,不能修改全局变量。# a = 4# def func1():# nonlocal a# a = 5# # print(name)# func1()# print(a)#在局部作用域中,对父级作用域(或者更外层作用域非全局作用域)的变量进行引用和修改,# 并且引用的哪层,从那层及以下此变量全部发生改变。# a = 4# def func1():# b = 6# def func2():# b = 666# print(b) #666# func2()# print(b) # 6## func1()# b = 4# def func1():# global b# b = 6# def func2():# nonlocal b# b = 666# print(b) ## func2()# print(b) ## print(b)# func1()
六、练习题
# 2、写函数,接收n个数字,求这些参数数字的和。(动态传参)‘‘‘def func(*args): sum = 0 for i in args: sum += i return sumprint(func(2,2,3))‘‘‘# 3、读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?# a=10# b=20# def test5(a,b):# print(a,b)# c = test5(b,a)# print(c)‘‘‘a = 20b = 10c = None‘‘‘# 4、读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么? # a=10 # b=20 # def test5(a,b): # a=3 # b=5 # print(a,b) # c = test5(b,a) # print(c)‘‘‘a = 3b = 5c = None‘‘‘# 1,有函数定义如下:# def calc(a,b,c,d=1,e=2):# return (a+b)*(c-d)+e# 请分别写出下列标号代码的输出结果,如果出错请写出Error。# print(calc(1,2,3,4,5))# print(calc(1,2))# print(calc(e=4,c=5,a=2,b=3))# print(calc(1,2,3))# print(calc(1,2,3,e=4))# print(calc(1,2,3,d=5,4))‘‘‘2 Error 248 10 Error‘‘‘# 2,下面代码打印的结果分别是_________,________,________.def extendList(val,list=[]): print(val) list.append(val) return listlist1 = extendList(10)list2 = extendList(123,[])list3 = extendList(‘a‘)print(‘list1=%s‘%list1)print(‘list2=%s‘%list2)print(‘list3=%s‘%list3)‘‘‘[10,‘a‘][123][10,‘a‘]‘‘‘
python基础十
相关内容
- Python--网络编程-----计算机基础,,咱们平常在电脑上使
- [python基础(一)]序列操作基础,,一、python的数
- python数字图像处理(五) 图像的退化和复原,,import
- python2 与python3的变化,,1 写文件如果是by
- Python os模块,,os模块1.os.g
- python(Django之Logging、API认证),,一、Loging模块
- python 一些练习 (初学),, 1 ‘‘‘temp
- python学习笔记第四节(字符编码+文本操作+函数),,
- Python基础04 运算,,Python的运算符
- Python:文件操作总结1——文件基本操作,,一、文件的
评论关闭