Python学习笔记-函数

本文是我在学习过程中的笔记,学习资料包括菜鸟笔记、相关的视频、书籍

定义函数

函数的作用:存储一段可以重复执行的程序,存储逻辑

  • 程序使用更加简洁,
  • 可以重复使用
  • 代码更加具有可读性,读函数名称和注释就可以知道代码的作用

定义函数的规则

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ( )。
  • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号 : 起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。
#函数的表示
'''
def 函数名称(参数1,参数2,参数 3):
    (缩进)函数体
    函数体里面的内容,外面看不到
    外面看到的:函数名称、参数值(输入)、返回值(输出)
    return 返回值
'''

def swap(x,y):
    """ 交换x,y的值 """
    c=y+1
    return {'a':c, 'b':x}

调用函数

通过 “函数名(参数列表)”的方式调用函数
函数体里面的内容只有当函数被调用时才会执行

  • print: 将某一个值打印(输出)到屏幕上面
  • return: 函数定义体输出的东西,使用变量去接收函数的返回值
#python 定义函数
def add(x):
    y = x+1
    #return 返回
    return y

# 调用函数
 a = int(input('请输入一个数:'))
 b = add(a)    #调用add函数
 print(b)

函数返回值

return [表达式] 输出返回值。不带参数值的return语句返回None
函数体里面程序遇到return就终止,不会再继续执行了

def get_bmi (height):
    if height >185:
        return '高'
    print ('不是高个')
    if height < 34:
        return '矮'
    print ('也不是矮个')
    return '普通人'

执行结果

D:\Python\Python37\python.exe D:/PycharmProjects/pythonProject1/test.py
高

Process finished with exit code 0

函数参数

  • 函数的定义和函数的调用,参数要一一对应
  • 形式参数要赋值=实际参数,要一一对应
  • 形式参数和实际参数是一个萝卜一个坑
  • 位置参数:形式参数和实际参数要根据位置(顺序)一一赋值

位置参数

  • 位置参数定义时和使用时要一 一对应,按照使用时传递的顺序赋值
#定义函数
def package (name,money,food):
    print('恭喜{} 拿到了一个{}的offer。'.format(name,money))
    return
       
#调用函数
package('nancy','20K','西瓜')
package('20K','nancy','西瓜')

*************执行结果*****************
D:\Python\Python37\python.exe D:/PycharmProjects/pythonProject1/test.py
恭喜nancy 拿到了一个20K的offer。
恭喜20K 拿到了一个nancy的offer。

Process finished with exit code 0
  • 调用函数时的参数个数和定义数量不一致时会报错
#定义函数
def package (name,money,food):
    print('恭喜{} 拿到了一个{}的offer。'.format(name,money))
    return
    
#调用函数
package('nancy','20K')

*************执行结果*****************
Traceback (most recent call last):
  File "D:/PycharmProjects/pythonProject1/test.py", line 5, in <module>
    package('nancy','20K')
TypeError: package() missing 1 required positional argument: 'food'

Process finished with exit code 1

关键字参数

位置参数需要一 一对应,如果参数多时调用时使用不方便,可以使用关键字参数来确定传入的参数值

  • 关键字参数允许函数调用时参数的顺序与声明时不一致
  • 可以部分作为关键字参数,部分做位置参数,但是位置参数要在关键字 参数前面
# 定义函数
def package (name,money,food):
    print('恭喜{} 拿到了一个{}的offer。'.format(name,money))
    return

# 调用函数
package(money='50K',name='小马',food='海鲜')  #调用时和声明时顺序不一致

package('小马',money='50K',food='海鲜')  #先位置参数,再关键字参数

************执行结果************
D:\Python\Python37\python.exe D:/PycharmProjects/pythonProject1/test.py
恭喜小马 拿到了一个50K的offer。
恭喜小马 拿到了一个50K的offer。

Process finished with exit code 0

位置参数在关键字参数之后会报错

# 定义函数
def package (name,money,food):
    print('恭喜{} 拿到了一个{}的offer。'.format(name,money))
    return

# 调用时位置参数在关键字参数之后报错
package('小马',money='50K','海鲜')

************执行结果**************
D:\Python\Python37\python.exe D:/PycharmProjects/pythonProject1/test.py
  File "D:/PycharmProjects/pythonProject1/test.py", line 7
    package('小马',money='50K','海鲜')
                                ^
SyntaxError: positional argument follows keyword argument

Process finished with exit code 1

默认参数

  • 当函数定义的时候有默认参数,那么在调用的时候,具有默认参数可以不传实际参数,使用默认参数作为实际参数
  • 默认参数的作用在于调用时可以少传参数
  • 定义的时候复杂,调用的时候简单
  • 默认参数也必须放在位置参数的后面
# 定义函数
def package (name,money,food='榴莲'):
    print('恭喜{} 拿到了一个{}的offer。'.format(name,money))
    print('{}最喜欢吃{}'.format(name, food))
    return

# 调用函数
package('nancy','20K')

******执行结果*********
D:\Python\Python37\python.exe D:/PycharmProjects/pythonProject1/test.py
恭喜nancy 拿到了一个20K的offer。
nancy最喜欢吃榴莲

Process finished with exit code 0

不定长参数

不知道需要定义多少个参数,可以使用不定长参数

  • 在函数定义里面,可以用*value去接收多余的位置参数
  • 在函数定义里面,value是元组
# 定义函数
def sum_total(a, b, *args):
    """*args 表示剩下的多余的参数"""
    #在函数定义里面,可以用*args去接收多余的位置参数
    #在函数定义里面,args是元组
    print(args)
    total = 0
    c = total + a + b
    for i in args:
        c+=i
    return c

# 调用函数
print(sum_total(3,4,5,6,7,8))

在函数调用中也可以用*value,可以是列表也可以是元组

# 定义函数
def sum_total(a, b, *args):
    """*args 表示剩下的多余的参数"""
    #在函数定义里面,可以用*args去接收多余的位置参数
    #在函数定义里面,args是元组
    print(args)
    total = 0
    c = total + a + b
    for i in args:
        c+=i
    return c

# 调用函数
print(sum_total(3,4,5,6,7,8))

# 列表
rest = [1,2,4]
print(sum_total(3,4,*rest))

#元组
rest =(1,2,3)
print(sum_total(3,4,*rest))

**************执行结果***********
D:\Python\Python37\python.exe D:/PycharmProjects/pythonProject1/test.py
(5, 6, 7, 8)
33
(1, 2, 4)
14
(1, 2, 3)
13

Process finished with exit code 0
  • 可以使用**kwargs 表示接收多余的关键字参数
def sum_total(a, b, *args,hobby='eat',**kwargs):
    """**kwargs 表示接收多余的关键字参数"""
    #函数体里面使用kwargs 是字典的形式接收多余的关键字参数
    print(args)
    print(kwargs)

sum_total(3,4,5,6,6,name='nice',age=18)

other_info = {'food':'辣条','date':7}
# 函数外面可以用两个
sum_total(3,4,5,6,6,name='nice',age=18,**other_info)

********执行结果*******
D:\Python\Python37\python.exe D:/PycharmProjects/pythonProject1/test.py
(5, 6, 6)
{'name': 'nice', 'age': 18}
(5, 6, 6)
{'name': 'nice', 'age': 18, 'food': '辣条', 'date': 7}

Process finished with exit code 0

总结

  • 函数的返回return后面是返回值,遇到return就结束
  • 函数参数-位置参数:一一对应,顺序要一直
  • 关键字参数:1、有标记,好记 2、可以换顺序
  • 默认参数 :可以少传参数
  • 顺序:位置参数在最前面,关键字参数和默认参数在后面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值