python(函数初识)

1.函数的返回值

  return关键字的作用

  return是一个关键字,在pycharm里,会变成蓝色的关键字。

1.1没有写返回值  

  如果未定义返回值,会默认返回一个None。

1 def my_len(str):
2     length = 0
3     for i in str:
4         length += 1
5     print(length)
6 ret = my_len('hello,world')
7 print(ret)
无返回值

1.2 返回一个值

1 def my_len(str):
2     length = 0
3     for i in str:
4         length += 1
5     return length
6 ret = my_len('hello,world')
7 print(ret)
返回一个值

1.3返回多个值

 返回的多个值会被组织成元祖, 也可以用多个值来接收

 1 def ret_demo():
 2     """
 3 
 4     :return: 多个值
 5     """
 6     return 1,2,3,4
 7 def ret_demo2():
 8     return  1,['a','b'],3,4
 9 
10 ret = ret_demo()
11 print(ret) # (1, 2, 3, 4)
12 ret2 = ret_demo2()
13 print(ret2)# (1, ['a', 'b'], 3, 4)
返回多个值

原因:序列化解压

 1 # 序列解压一
 2 a,b,c,d = (1,2,3,4)
 3 print(a)
 4 a,_,_,d = (1,2,3,4)
 5 print(d)
 6 a,*_ =(1,2,3,4)
 7 print(*_)
 8 # 同样也适用于字符串、列表、字典、集合
 9 a,b = {'name':'eva','age':18}
10 print(a,)
11 print(b)

2. 函数的参数

2.1 位置参数

  2.1.1 按照位置传值
1 # 位置传参
2 def mymax(x,y):
3     return x if x>y else y
4 ma = mymax(10,20)
5 print(ma)
按位置传值
  2.1.2 按照关键字传值
1 # 按照关键字位置去传递参数
2 def mymax(x,y):
3     return x if x>y else y
4  ma = mymax(y=10, x=20)
5 
6 print(ma)
按照关键字传值

  2.1.2位置、关键字混合使用

1 def mymax(x,y):
2     return x if x>y else y
3 ma = mymax(10,y=20)
4 print(ma)
位置、关键字混合使用

  正确用法:

  ①、位置参数必须在关键字参数的前面

  ②、对于一个形参只能赋值一次

2.2 默认参数

  2.2.1.正常使用

  为什么要有默认参数:将变化比较小的值设置为默认参数

  2.默认参数的定义

1 # 默认参数
2 def stu_info(name,sex="male"):
3     print(name,sex)
4     return 'a'
5 print(stu_info('alex'))
6 print(stu_info('eva','female'))
默认参数
  2.2.2 参数陷阱

  参数陷阱:默认参数是一个可变数据类型

1 # 参数陷阱:默认参数是一个可变数据类型
2 def defult_param(a,l=[]):
3     l.append(a)
4     print(l)
5 print(defult_param('egon'))
6 print(defult_param('alex'))
参数陷阱

2.3 动态参数

动态参数,也叫不定长参数,也就是你需要传递的参数很多,不定个数,这种情况下,需要使用*args,**kwargs,
*args是元祖形式,接收出去键值对以外的所有参数。
*kwargs接收的只是键值对的参数,并且只保存在字典中
1 def trans_para(*args, **kwargs):
2     print(args, type(args))
3     print(kwargs, type(kwargs))
4 # 调用
5 trans_para("jinxin",12,[1,2,3,4,],[3,4,],(1,4,7),{"a": "123", "c":456}, country="china")
动态参数

  

猜你喜欢

转载自www.cnblogs.com/shine-rainbow/p/9782520.html