关键词搜索

源码搜索 ×
×

Python学习笔记4:函数

发布2021-09-20浏览313次

详情内容

1.函数
函数就是一段具有特点功能的、可重用的语句组。
Python中函数是以关键词 def 开头,空格之后连接函数名和圆括号(),最后一个冒号:结尾。
函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并表达函数功能。
每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。

  1. def strlen(s):
  2. “”“ calulate the length of the string ”“”
  3. len = 0
  4. for x in s:
  5. len = len + 1
  6. return len

空函数

  1. def null_fun():
  2. """This is a null fun"""
  3. pass #pass语句什么都不做,实际上用来作为占位符

不写return与写入return None的效果相同,返回的只都是None          
只写一个return后面不加任何东西的时候与写return None的效果一样
如果在函数中有多个return,只执行第一个return。

多返回值函数

  1. def mult_return():
  2. name='Lily'
  3. age=18
  4. return name, age
  5. c= mult_return()
  6. print(c)
  7. # ('Lily', 18)
  8. n, a = mult_return()
  9. print(n, a)
  10. # Lily 18

当用一个变量接收返回值的时候,收到的是一个元组。这是因为在python中把用逗号分割的 多个值认为是一个元组。
当返回值有多个变量接收,那么返回值的个数应该和接收变量的个数完全一致。

函数调用

  1. s='hello world!'
  2. length=strlen(s) #调用上面写的strlen函数
  3. print(length) #打印输出12

函数参数
函数的参数安装类型可以分为形参和实参(可变类型和不可变类型)。
不可变类型(如 整数、字符串、元组)传递的只是它的值,没有影响对象本身。如果在函数内部修改它的值,则是相当于新生成一个它。
可变类型则类似C++的引用传递,如列表,字典。则是将参数真正的传过去,修改后外部的参数变量也会受影响。

  1. def invariableFun(i):
  2. i=100 #参数为不可变类型,函数内部改变不会影响外部参数
  3. a=1
  4. print(a)
  5. invariableFun(a)
  6. print(a)
  7. #输出结果如下
  8. 1
  9. 1
  1. def variantFun(list):
  2. list.append('python') #参数为可变类型,函数内部改变会影响外部参数
  3. mylist=['Lily', 'James']
  4. print(mylist)
  5. variantFun(mylist)
  6. print(mylist)
  7. #输出结果如下
  8. ['Lily', 'James']
  9. ['Lily', 'James', 'python']

参数还可以分为必需参数,关键字参数, 默认参数和不定长参数。

1)必需参数
必要参数,即函数调用时必须要传的参数。

2)默认参数
必选参数在前,默认参数在后,否则python教程解释器会报错。
默认参数一定要指向不变对象!指向不变对象!指向不变对象!

  1. def student(name, age=18):
  2. print(name, age)
  3. student("Lily")
  4. student("Lily", 20)
  5. #输出结果如下:
  6. Lily 18
  7. Lily 20

3)关键字参数
其实默认参数中已经出现了关键字参数!关键字参数就是在调用函数时,传入实参时带参数名,用这样的方式传入的实参叫做关键字参数。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

  1. def student(name, age=18):
  2. print(name, age)
  3. student(age=22, name='Lily')
  4. #输出结果如下:
  5. Lily 22

4)不定长参数
不定长参数又分为两种:
a.允许在调用时传入多个“非关键字”参数,python会将这些多出来的参数放入一个元组中。

  1. def tupleVarArgs(arg1, arg2='default arg2', *other):
  2. print('arg1: ', arg1)
  3. print('arg2: ', arg2)
  4. for x in other:
  5. print('other arg: ', x)
  6. #调用输出结果如下:
  7. tupleVarArgs('Lily')
  8. arg1: Lily
  9. arg2: default arg2
  10. tupleVarArgs('Lily', 'Sandy')
  11. arg1: Lily
  12. arg2: Sandy
  13. tupleVarArgs('Lily', 'Sandy', 'James', 'Curry')
  14. arg1: Lily
  15. arg2: Sandy
  16. other arg: James
  17. other arg: Curry

b.允许在调用时传入多个“关键字”参数,python会将这些多出来的<参数名, 参数值>放入一个字典中。需要注意的是,关键字变量参数应该为函数定义的最后一个参数,带**。

  1. def dictVarArgs(arg1, arg2='default arg2', **otherArgs):
  2. print('arg1: ', arg1)
  3. print('arg2: ', arg2)
  4. for x in otherArgs.keys():
  5. print('other arg: <%s : %s> '% (x, str(otherArgs[x])))
  6. #调用输出结果如下:
  7. dictVarArgs('Lily')
  8. arg1: Lily
  9. arg2: default arg2
  10. dictVarArgs('Lily', 'Sandy')
  11. arg1: Lily
  12. arg2: Sandy
  13. dictVarArgs('Lily', 'Sandy', name1='James', name2='Curry')
  14. arg1: Lily
  15. arg2: Sandy
  16. other arg: <name1 : James>
  17. other arg: <name2 : Curry>


 

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载