一、函数补充

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)             

 

posted on 2019-06-19 23:41  *星  阅读(145)  评论(0编辑  收藏  举报