函数基础
1.函数的意义:减少重复性代码,提高代码的可读性。
2.函数的分类:系统内置,自定义。
系统内置
自定义函数
def 函数名(arg1,arg2…):
‘’’
函数说明文档
‘’’
函数体代码块
return 表达式|值
def 为函数声明的关键字
函数名的规范和变量名一致
函数参数参照后面课程讲解(重点)
函数的调用:函数名(实参)
函数中的逻辑只有在调用时才会真正运行
函数必须在调用之前定义
函数中遇到return语句,则将其之后的结果返回并结束函数执行,如果没有明确return语句则函数运行完毕返回结果为None
例:1
def zhishu(num):
for x in range(2,num):
if num % x == 0:
return False
else:
return True
if zhishu(3):
print(“3是质数”)
elif zhishu(4):
print(“4是质数”)
例:2
def f():
print(“我是一个函数”)
#调用
a = f()
print(a)
例:调用函数求100的因子
def f(num):
list1 = []
for x in range(1,num+1):
if num % x == 0:
list1.append(x)
return list1
a = f(100)
print(a)
例:求半径为r的圆的周长
def f®:
import math
l = 2 * math.pi *r
return l
print(f(5))
1).函数的实际参数的传入分为传值传递和引用传递(所有的编程 语言均涉及)
2).python中实际参数类型为可变类型是时传入方式为引用传递
3).不可变类型为传值传递
4).引用传递在函数内部对参数值进行改变将影响原始的对象
5).传值传递则不会有上面的现象出现
6).字符串,数字,布尔,none,元组均为不可变类型
列表,字典,集合均为可变类型
如下示例演示了引用传递对实际参数本身的影响
所以对可变类型注意选择合适的copy方法传入其副本
例:关于传值传递
元组形式的参数影响示例:
3.参数形式
必须参数,关键字参数,默认参数,可变参数
1.)必须参数
定义的形式参数和调用的实际参数必须一一对应(顺序,数量)
正确的调用
错误的调用
2.)关键字参数
(形式参数 = 实际参数)传入参数,函数调用时不关心参数顺序
应用场景:在我们不清楚参数的顺序时使用
调用示例
3.)默认参数
在我们函数定义是可以给参数设置一个默认值,当调用时该函数没有传入参数
函数逻辑使用预设的默认值,否则使用传入的参数
示例:
4.)args **kwargs 参数
函数需求传入的参数数量不明确的情况下,我们python提供了不定长参数方式
一般使用args或者**kwarge的形式声明参数的形式
以*args形式声明参数在函数中使用args获取传入的参数(args的值是由参数构成的元组)
例1:
def fun(*args):
print(args)
#调用示例
fun(1,2,3,4,“a”)
fun()
fun(4,“a”)
例二:
def fun(*args):
b = 0
for x in args:
b += x
print(b)
l = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
fun(*l)
kwargs 形式的可变参数,在函数内部kwargs是一个字典
字典得key是我们传入的形式参数的名字,值为形式参数的值
若以字典形式传入时,注意字典的key必须是字符串类型
**kwargs调用示例
5.)扩展:必须关键字参数
仅在3.1之后的python中被支持
对于必须关键字参数,在传入时必须以关键字形式传入
定义:一般需要写在所有参数的最后部分,与其他形式的参数之间用 * 隔开
def funkw(a,k=0,*,city,age):
print(a)
print(k)
print(city)
print(age)
#正确的调用
funkw(20,city=“西安”,age=30)
注意:不推荐混合使用,若要混合使用请遵循:必须参数,默认参数,可变参数,关键字参数