(六)函数----(一)
目录
6.1函数的定义
#仿写len函数
s = input('请输入:')
def my_len(): #定义函数
i = 0
for j in s:
i += 1
return(i)
l = my_len()
print(l)
#函数的注释
def f():
'''
函数的功能
参数1:
参数2:
:return:
'''
6.2返回值return
返回值的3种情况 :
1)没有返回值:
a.没有返回值--默认返回值为None
b.没有retrun 只有retrun:结束函数(中断函数)
c.return None---不常用
2)只有一个返回值:
a.可以返回任何数据类型,如返回一个列表return [1,2,3]
b.只要返回就可以接收
3)返回多个值:
a.多个返回值用多个变量接收:有多少返回至就用多少变量接收
b.如果只用一个变量接收:得到的是一个元组
#如果一个程序有多个return,只执行第一个
def f1():
li = ['aa','bb']
for i in li:
print(i)
return
print('cc')
ret = f1()
print(ret) #不打印cc
6.3实参和形参
实参:函数定义中的变量为实参
按照位置传参
按照关键字传参
混着用可以,但是必须按照位置传参 再按照关键字传参 不能给同一个变量传递多个值
形参: 函数调用中的变量称为形参
位置参数:必须传,有几个参数传几个秩,一一对应
默认参数:可以不传,如果不传就是用默认值,如果传了就用传的值
s = input('请输入:')
def my_len(s): #接收参数,形式参数,形参
i = 0
for j in s:
i += 1
return(i)
l = my_len(s) #传递参数,传参 实际参数,实参
print(l)
参数 :
a.没有参数,即定义函数和调用函数,括号里什么都不写
b.有一个参数,即传什么接收什么
c.有多个参数
#传递多个参数
def my_sum(i,j):
sum = i + j
return sum
print(my_sum(1,3))
#默认参数 无则使用默认 有则使用传递的值
def classmate(a,b = '男'):
print('{}:{}'.format(a,b))
classmate('aa')
classmate('bb','女')
调用函数的时候:
按位置传:直接写参数的值
按关键字传:关键字 = 值
顺序:先位置传参数,再关键字传参数
定义函数的时候:
位置参数:直接定义参数
默认参数,关键字参数:参数名 = '默认的值’
动态参数:可以接收任意多个参数
按照位置接收多个参数,参数名之前加*,习惯参数名args
按照关键字接收多个参数,参数名之前加**,习惯参数名kwargs
顺序:位置参数,*args,默认参数,**kwargs
def sum(*args):
n = 0
for i in args:
n += i
return n
print(sum(1,3,4)) #8
def f(**kwargs):
print(kwargs)
f(a = 1,b = 2,c = 3)
f(a = 1,b = 2)
f(a = 1)
'''
{'a': 1, 'b': 2, 'c': 3}
{'a': 1, 'b': 2}
{'a': 1}
'''
动态参数:可以接受任意多个参数
*args : 接收的是按照位置传参的值,组织成一个元组
**kwargs:接受的是按照关键字传参的值,组成的是一个字典
*args必须在**kwargs之前
#动态参数的另一种传参方式
def f(*args): #站在形参的角度,给变量加上*,就是组合所有传来的值
print(args)
f(1,2,3)
l = [1,2,3,4]
f(*l) #站在实参的角度,给一个序列加*,就是将这个序列按顺序拆分
def f(**kwargs):
print(kwargs)
f(a = 1,b = 2)
d = {'a':1,'b':2}
f(**d)
'''
(1, 2, 3)
(1, 2, 3, 4)
{'a': 1, 'b': 2}
{'a': 1, 'b': 2}
'''

被折叠的 条评论
为什么被折叠?



