Python中的函数

1、函数

1.1 定义:函数是可以重复执行的语句块,可以重复的调用
1.2 作用:

 ·用于封装语句块,提高代码的重用性
 ·定义用户级别的函数

1.3 def 语句
1.3.1 语法:

 def 函数名(形参列表):
        语句块(代码块)
函数名变量 = 函数名()

1.3.2 作用:

用语句块创建一个函数,并用函数名变量绑定这个函数

1.3.3 语法说明:

·函数名是变量,它用于绑定语句块
·函数有自己的名字空间,在函数外部不可以访问函数内部的变量,在函数内部可以访问函数外部的变量
    (要让函数处理外部的数据需要用参数给函数传入一些数据)
·函数不需要传入参数时,形参列表可以为空
·语句部分不能为空,如果为空需要填充pass语句

2、函数调用

2.1 语法:

函数名(实际调用传递参数)
注: 实际调用传递参数 即实参

2.2 说明:

函数调用是一个表达式
如果函数内部没有return语句,则函数执行完毕后返回None对象

2.3 示例
1)示例1:
写一个函数 myadd,此函数中的参数列表里有两个参数x,y, 此函数的功能是打印x+y的和

def myadd(x,y):
    print(x+y)
myadd(100, 200)
myadd("ABC", '123')

输出如下:

300
ABC123

2)示例2:
写一个函数 print_even, 传入一个参数n代表终止整数, 打印 2 4 6 8 … n之间的所有偶数

def print_even(n):
for i in range(1,n+1):
    if i%2 ==0:
        print(i,end = ' ')
print_even(15)

输出如下:

2 4 6 8 10 12 14

3、return 语句

3.1 语法:

return [表达式]
注: []代表可以省略其中的内容

3.2 作用:

用于函数中结束当前函数的执行,返回到调用该函数的地方,同时返回一个对象的引用关系

3.3 说明:

·return 语句后跟表达式可以省略,省略后相当于 return None
·如果函数内没有 return 语句,则函数执行完最后一条语句后返回None(相当于在最后加了一条return None语句)

3.4 示例:
1)示例1:重写一个函数myadd2, 实现返回两个数的和:

def myadd2(a, b):
    return a+b
# 因为用int将输入的字符串转为整型,所以输入必须是整数,否则报错
a = int(input("请输入第一个数: "))
b = int(input("请输入第二个数: "))
print("您输入的两个数之和是: ", myadd2(a, b))

运行结果如下:

请输入第一个数: 22
请输入第二个数: 33
您输入的两个数之和是:  55

2)示例2: 写一个函数mymax, 实现返回两个数的最大值:

def mymax(a, b):
    return max(a,b)
print(mymax(100, 200)) 
print(mymax("ABCD", "ABC")) 

输出如下:

200
ABCD

4、python 函数的参数传递

传递方式:

·位置传参
·序列传参
·关键字传参
·字典关键字传参

4.1 位置传参:实际参数(实参)的对应关系与形式参数(形参)的对应关系是按位置来依次对应的
4.1.1示意:

def mymin(a,b,c):
    pass
mymin(1,2,3)    #1,2,3=a,b,c

4.1.2说明:

实际参数和形式参数通过位置进行传递和匹配
实际参数的个数必须与形式参数的个数相同

4.1.3 示例:

def mymin(a, b, c):
    print(a,b,c)
mymin(1, 2, 3)      #输出: 1 2 3

4.2 序列传参:序列传参是指在函数调用过程中,用 * 将序列拆解后按照位置进行传参的传参方式
4.2.1 说明:

序列传参时,序列拆解的位置将于形参一一对应,
序列的位置信息对应相应的参数位置

4.2.3 示例

def myfun(a,b,c):
    print(a,b,c)
s1 = [11,22,33]
myfun(*s1)
# 与如下函数效果相同:
def myfun(s):
    for i in s:
        print(i,end = ' ')
s = [11,22,33]
myfun(s)

输出如下:

11 22 33

4.3 关键字传参:

关键字传参是指传参时,按着形参的名称给形参赋值
实参和形参按照名称进行匹配

4.3.1 示意:

def myfun(a,b,c):
   pass
myfun(b=22,c=33,a=11)   # 将会按照名称进行匹配

4.3.2 说明:

实参和形参按着形参名进行匹配,可以不按照位置进行匹配

4.3.4 示例

def myfun(a, b, c):
    print(a,b,c)        # 输出 11 22 33
myfun(b=22,c=33,a=11)

4.4 字典关键字传参:字典关键字传参是指实参为字典,将字典用 ** 拆解后进行关键字传参的方式

4.4.1 说明:

字典的键和形参名一致
字典的键名必须为字符串(且为标识符的命名方式)
字典中的键要在形参中存在

4.4.2 示例

def my_dict(a,b,c,d):
    print(a,b,c,d)      # 输出:1 2 3 4
a = {"a":1,"b":2,"c":3,"d":4}
my_dict(**a)

5、函数的综合传参

5.1 函数的传参方式:

在能确定形参能唯一匹配到相应实参的情况下可以任意组合,但 函数的位置传参要先于关键字传参

5.2 说明:
5.2.1 位置传参和序列传参可以混合使用 且可以顺序颠倒

  如;
    myfun(100,*[200,300])
    myfun(*[100,200],300)
    myfun(*[100,],200,*[300])

5.2.2 函数的关键字传参和字典关键字传参可以混合使用,且可以顺序颠倒

  如:
    myfun(c=300,**{"b":200,'a'})
    myfun(**{'b':200,'c':300},a=100)

5.2.3位置传参和关键字传参可以混合使用,但位置传参要先于关键字传参:

  如:
    myfun(100,c=200,b=20)
    myfun(10,c=30,***{"b":20})

6、函数的缺省参数

6.1 语法:

def 函数名(形参名 = 默认实参1 , 形参名2 = 默认实参2,……):
    语句块

6.2 示例:

def info(name='小明'):
    print("我的名字是",name)
info()
info('王花花')

输出:

我的名字是小明
我的名字是王花花

6.3 说明:

·缺省参数必须自左至右依次存在,如果一个参数有缺省参数,择其右侧的所有参数都必须是缺省参数
·缺省参数 可以有0个或多个,甚至全部都可以为缺省参数

7、函数形参的定义方式 ##

·位置形参
·星号元组形参
·命名关键字形参
·双星字典形参

7.1 位置形参

def 函数名(形参名1,形参名2,……):
    pass

7.2 星号元组形参
7.2.1 语法:

def函数名(*元组形参名):
    语句块

7.2.2 作用:收集多余的位置形参

7.2.3 说明:元祖形参一般命名为 ‘args’
7.2.4 示例
1)示例1:

def fx(a,b,*args):
    print("形参的个数是",len(args)+2)
fx(1,2.3)
fx(1,2,3,4,5,6,7,8,9,10)

输出为:

形参的个数是 2
形参的个数是 10

2)示例2

def mymax(a,*args):
    if not args:
        args = tuple(a)
    else:
        args = list(args)
        args.append(a)
        args = tuple(args)
    max_ = 0
    for i in range(len(args)):
        if args[i]>=max_:
            max_ = args[i]
    return max_
print("最大值为:",mymax([6,8,3,5]))
print("最大值为:",mymax(100,200))
print("最大值为:",mymax(1,3,5,9,7))

输出为:

最大值为: 8
最大值为: 200
最大值为: 9

7.3 命名关键字形参
7.3.1 注意:

* 是位置形参和关键字形参的分割符
*args 与 *  互斥,形参中只能有一个

7.3.2 语法:

def 函数名(*,命名关键字形参): 
    语句块
或
def 函数名(*args,命名关键字形参):
    语句块

7.3.3 作用:

强调所有关键字必须用关键字传参或者字典传参

7.3.4 示例
示例1:

def myfun(*,c,d):
    print(c,d)    # 3 4
myfun(c=3,d=4)
# myfun(3,4)    # 出错TypeError

示例2:

def fun(a,b,*,c,d):
    print(a,b,c,d)
# print(fun(1,2,3,4))   # 出错
print(fun(1,2,c=3,d=4)) # 1 2 3 4

示例3

def fun(a,*args,b):
    print(args)         # args : 2 3 4 5 
fun(1,2,3,4,5,b=6)

7.4 双星号字典形参
7.4.1 语法:

def 函数名(**字典形参名)
    语句块

7.4.2 作用:收集多余的关键字传参

7.4.3 说明:字典形参一般命名为kwargs

7.4.5 示例:

def fun(a,**kwargs):
    print(kwargs)
fun(a = 1,b = 2,c = 3,d = 4)

输出:

{'b': 2, 'd': 4, 'c': 3}

7.8 函数的参数说明:

位置形参,缺省参数,型号元组形参,双星号字典形参等可以混合使用

7.8.1 函数参数自左至右的顺序为:

1)位置形参
2)型号元组形参
3)命名关键字形参
4)双星号字典形参

7.8.2 示例:

def fn(a, b, *args, c, **kwargs):
    print('a = ',a)
    print('b = ',b)
    print('arge = ',args)
    print('c = ',c)
    print('kwargs = ',kwargs)
fn(100, 200, 300, 400, d="D", e='E',c = "C")

输出如下:

a =  100
b =  200
arge =  (300, 400)
c =  C
kwargs =  {'d': 'D', 'e': 'E'}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值