pyhon 初始函数
内容介绍
函数定义和调用
返回值
参数
函数定义和调用
函数分为:内置函数和自定义函数,内置函数是python自带的函数,不需要定义,直接调用就行。主要介绍自定义函数。
函数的定义:def 函数名(): 目的:定义之后可以在任何地方调用它。代码如下:
x = 3 y = 4 def my_sum(): #自定义一个求和函数 print(x+y) #函数体内部打印 but,如果将调用函数赋给变量是否存在值呢? my_sum() # 函数调用
结果: 7
返回值
上述函数虽然在cmd或者pycharm中都能打印出结果,但是 如果将调用函数代码改为 a = my_sum() 呢? 我想要这个结果去做其他的事情?看运行结果:
图 1-1
很显然,函数并没有给我返回值,怎么办呢?
我们创建函数显然是要最终的返回值,在函数里加上 return 返回值 就行了。
return需要注意的一点:函数一旦执行了return,那么后面的代码就不执行,直接跳出函数。比如下面的代码:
x = 3 y = 4 def my_sum(): #自定义一个求和函数 print('#######') return x+y #一旦执行了return ,后面的代码就不执行 print('......') # a = my_sum() #函数调用 print(a)
结果: 由此可以对比出print('......')并没有执行。

return 返回值有3种情况
没有返回值
- 不写 return 就像图1-1写的代码一样
- 只写return 这个就是说只写return 后面不写返回值 导致的结果跟没写return是一样的
返回一个值
- 可以放返回任何类型的值(str、int、list、dict、tuple等)
- 只有有返回值就可以接收到
- 程序中多个return,只执行第一个。
返回多个值
- return 1,2 return后面可以跟多个返回值
- 多个返回值用一个变量接收:得到的是一个元组
- 多个返回值用多个变量接收
def my_msg(): return 1,2,3 a,b,c = my_msg() #多个变量接收多个返回值 print(a,b,c) #1 2 3 x = my_msg() #一个变量接收多个返回值 print(x,type(x)) #(1, 2, 3) <class 'tuple'>
函数的参数
上面介绍的函数定义中,都是不含参数的。函数参数分为:形参和实参。先说一下参数中涉及到概念。
形参:定义函数时括号里面的变量
实参:调用函数时括号里面传递的变量
定义:def 函数名(形参1,形参2)
位置参数:直接定义的参数
关键字参数:关键字 = ‘值’
动态参数:*args 和 **kwargs
看文字还不了解,直接看代码:
def s_info(name,age,sex): #定义位置参数 msg = ''' ******info******* Name:{} Age:{} Sex:{} ***************** '''.format(name,age,sex) return msg info = s_info('admin',18,'男') #位置参数:admin传递给name 18传递给age 男 传递给sex 按照位置传递 print(info)
def s_info(name,age,sex = '女'): #定义位置参数和关键字参数 msg = ''' ******info******* Name:{} Age:{} Sex:{} ***************** '''.format(name,age,sex) return msg info = s_info('admin',18) #关键字参数: 函数定义了关键字sex=女,调用的时候就不需要再输入除非关键字参数默认值改变 print(info) #注意,上面这个代码中,位置参数和关键字参数可以混合使用,但是,顺序不能弄错,先是位置参数,其次是关键参数
def s_info(name,*args,job='IT',**kwargs): #*args 接收的是位置参数的值:18 和 男 组成元组 # **kwargs 接收的是关键字参数的值:a = 1、b = 2、c = 3 组成字典 msg = ''' ******info******* Name:{} Age and Sex:{} Job:{} 其他:{} ***************** '''.format(name,args,job,kwargs) return msg info = s_info('admin',18,'男',a=1,b=2,c=3) print(info)
运行结果:

由此可知,函数定义参数是按照:位置参数 —— *args —— 关键字参数 —— **kwargs
不信的话,可以调整位置试试
错误演示:

由此可见,关键字参数被年龄18给重新赋值了,导致结果变了。
思维导图总结:


浙公网安备 33010602011771号