函数-参数-拆包

1.定义

def fun():

  pass

fun()

2.参数

默认值:

def fun2(a,b=20,c=1):
    print(a)
fun2(a=20,c=29)
fun2(10,30)

 

不定长参数:

def add(a,b,*args):   #元组
    print(a)
    print(b)
    print(args) #(45, 34, 5)
add(12,3,45,34,5)

 

 拆包

A =(1,23,4)

B= {'age':100, 'name':'join'}

fun(10,20, *A, **B)  -->等价于 fun(10,20,1,23,4, age=100, name='join')

fun(10,20,A,B)   --->A和B仅仅是一个变量,和10没什么区别

 

def fun3(a,b,*args,**kwargs):
    print(a)
    print(b)
    print(args) #()
    print(kwargs) #{'age': 'lisi', 'name': 'zhangsan'}
fun3(12,4,name="zhangsan",age="lisi")  #参数顺序不能改变

  A=(1,2,3)
  B={'name':'zhangsan','age':20}
 fun3(12,3,A,B)
  fun3(12,3,*A,**B)  #  拆包 将*A拆成(,),,将**B拆成{key:value}
->

(1, 2, 3)
{'age': 20, 'name': 'zhangsan'}

 值反馈:

  对于不可变类型(数字,字符串,元组),没有反馈作用;可变类型可以修改;

  本质就是赋值

3.返回值

 return a,b,c   -->(a,b,c)

 return [a,b,c]

 

4.局部变量

a=100
def fun():
    # global a;#声明为全局变量
    a=200   #定义变量,此为局部变量
    print(a)
fun()
print(a)

 对于引用类型的变量,可以在局部变量进行修改

 

5.全局变量

建议全局变量命名为:g_a

6.匿名函数 lambda表达式

 fun = lambda 参数:式子

fun = lambda a,b:a+b   #只能写表达式
c = fun(10,20)

 

应用:

1.排序

a=[ {'name':'zhangsan','age':12}, {'name':'lsii','age':22}, {'name':'admin','age',32}] 

a.sort(key=lambda x:x['age])   不可加空格

def test(a,b,func):
    print(func(a,b))
func=input('请输入lambda表达式')
test(11,22,func) 

 

python2中,输入的字符串当做表达式执行,

在python3中会报错

 

posted @ 2018-04-15 15:27  fight139  阅读(247)  评论(0编辑  收藏  举报