函数(一)
函数的简介
-
函数的创建
-
函数的调用
-
函数的参数
-
函数的返回值
print() 打印函数
函数的特点:
- 函数中可以用来保存一些可执行的代码,在你需要的时候可以对这些代码进行多次的调用
- 函数中保存的代码不会立即执行,需要调用函数的时候代码才会执行
语法:
语法
def 函数名([形参1,形参2,形参3....]):
代码块
def fun(): # 自定义函数 fun是函数名(函数对象)
print('这是我的第一个函数')
fun() # 函数的调用
fun() # 函数的调用
fun() # 函数的调用
函数的参数
def fun(a, b): #函数的参数相当于在函数里面定义了一个或多个变量但是并没有
#给他们赋值ab就是这个函数的形式上的参数(形参)
print(a + b)
fun(1, 2) # 调用函数:如果有形参就必须传递实参(实际的参数)
参数的传递方式
1.位置传参
def fun(a, b, c=5): # c=5就是将c的默认值设为5但是如果在调用的时候
#重新赋值就会对默认的值进行覆盖
print(a)
print(b)
print(c)
fun(1, 2, 3) #将对应位置上的实参赋值给对应位置上的形参
结果:
E:\shihaoqing\python.exe F:/BaiduNetdiskDownload/参数的传递方式.py
1
2
3
Process finished with exit code 0
2.关键字传参
def fun(a, b, c=5): # 给对应的形参赋值,关键字传参不需要对应位置
print(a)
print(b)
print(c)
fun(a=1, c=3, b=2 )
结果:
E:\shihaoqing\python.exe F:/BaiduNetdiskDownload/参数的传递方式.py
1
2
3
Process finished with exit code 0
3.位置传参和关键字传参混合使用
def fun(a, b, c=5):
print(a)
print(b)
print(c)
fun(a=1, c=3, 2)# 位置传参必须放在关键字传参前
结果:
E:\shihaoqing\python.exe F:/BaiduNetdiskDownload/参数的传递方式.py
File "F:/BaiduNetdiskDownload/参数的传递方式.py", line 21
fun(a=1, c=3, 2)
^
SyntaxError: positional argument follows keyword argument
Process finished with exit code 1
4.实参的类型
实参可有是字符串,列表,int等所有类型
5.不定长参数
-
不定长参数: 不知道会接受几个实参,所以用不定长参数(形参)来接受实参
-
arges就是不定长参数(接收位置传参) 当arges和位置传参混合使用的时候,位置参数一定要放到*a的前面
-
当*arges和关键字传参一起使用的时候,关键字传参要放到后面去
-
**arges也是不定长参数(接收关键字传参)
-
当四种传参方式同时使用时的顺序: 位置参数, *args, 关键字参数, **kwargs
def fun(c, *args, b):
print(*args)
print(args)
i = 0
for i in args:
i += i
print(i)
fun(2, 3, 4, 5, b=1)
E:\shihaoqing\python.exe F:/BaiduNetdiskDownload/不定长参数.py
3 4 5
(3, 4, 5) #args是一个元组
10
Process finished with exit code 0
def fun(a, **kwargs):
print(a)
print(kwargs)
fun(2, b=5)
E:\shihaoqing\python.exe F:/BaiduNetdiskDownload/不定长参数.py
2
{'b': 5}#kwarges是一个字典
Process finished with exit code 0
def fun1(*args, **kwargs): # 万能函数
pass
参数的拆包
可以理解成与不定长参数是相反的
def fun(a, b, c):
print(a)
print(b)
print(c)
t = (1, 2, 3)#t='asd'也可以
fun(*t)
结果:
E:\shihaoqing\python.exe F:/BaiduNetdiskDownload/参数的拆包.py
1
2
3
Process finished with exit code 0
def fun(a, b, c):
print(a)
print(b)
print(c)
t = {'a': 1, 'b': 2, 'c': 3}
fun(*t)
fun(**t)
结果:
E:\shihaoqing\python.exe F:/BaiduNetdiskDownload/参数的拆包.py
a
b
c
1
2
3
Process finished with exit code 0
作业:
def name():
while True:
name = input('请输入名字:')
if 6 <= len(name) <= 20:
break
else:
print('名字太长或太短')
continue
while True:
tel = input('请输入电话:')
if len(tel) == 11:
if tel.isdigit():
break
else:
print('手机号码只能为数字')
continue
else:
print('请输入正确的手机号码')
continue
while True:
gender = input('请输入性别')
if gender == '男' or gender == '女':
break
else:
print('请输入男或女')
continue
return name, tel, gender
def fibonacci(num):
a, b = 1, 1
list1 = []
for i in range(num):
if i == 0:
list1.append(a)
if i > 0:
a, b = b, a + b
list1.append(a)
print(list1)
fibonacci(20)
def summation(num):
r = 0
for i in range(num + 1):
r += i
print(r)
summation(100)