一、函数补充
1、位置参数,必填的
2、默认值参数,非必填
3、*args可变参数、参数组、非必传,不限制个数,传多个参数,它把多个参数放到一个元组里面,元组名args,这个名字随便起,不能用关键字调用
4、**kwargs 关键字参数,非必传,不传存空字典,传入多个参数的时候,它把参数放到一个字典里面,必须使用关键字调用
5、关键字参数后面不能再用位置参数的
6、这几种一起传的话,顺序可以这样,位置参数,默认值参数,*args参数,**kwargs参数
def myfunc(name,addr='beijing',*args,**kwargs):#位置参数,默认值参数,可变参数,关键字参数 print('name',name) print('addr',addr) print('args',args) print('kwargs',kwargs) # myfunc(name='xiaobai',addr='shanghai',age=18,sex='nv') myfunc('zxy','shanghai','good',a1=2,b1=4)
二、解包
1、列表,元组,字符串,集合,字典,都可以解包,集合是无序的,最好不要用这种方法,字典解包,要用2个*,其余都用一个*
def connect(ip,username,passwd,port): # print(ip) # print(username) # print(passwd) # print(port) # # info=('192.168.1.1','root','888888',3380) # list=['abc',123,'dfg',888] # s='hero' # se={1,'ad',3,4} # dic={"ip":"192.168.1.1","username":"root","passwd":"888888","port":3380} # connect(info[0],info[1],info[2],info[3])#笨方法 # connect(*info)#元组解包,很高级 # connect(*list)#列表解包 # connect(*s)#字符串解包 # connect(*se)#集合解包是无顺序,最好别用 connect(**dic)#字典解包,字典也是无顺序,要用2个*,就是关键字调用,才能正确传值
三、全局变量
1、全局变量,就是大家都可以用的变量
2、局部变量,函数里面定义的变量都是局部变量,函数调用结束,该变量就从内存释放掉,不会继续占用内
3、不可改变的数据类型(字符串、整型、元组),在函数内部修改这些全局变量时,要加globle
4、可改变的数据类型(列表、字典、集合),在函数内部修改这些全局变量时,无需加globle
language = 'Python' #全局变量#str def hello(): # global language language = 'Java' #局部变量 print(language) def xiaobai(): print(language) hello() xiaobai() # print(language)