十一、函数一

1.初始函数

函数到底是啥

多行代码块的集合, 需要使用的时候可以通过函数名来使用,比如print()

1.11定义函数

def 函数名(参数1,参数2,...):
    """说明参数"""
    函数体
    return 值

函数名()


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

举例

def choice_hero():
    print('王昭君')
    print('安其拉')
    ....

choice_hero()
>>>王昭君
>>>安其拉

什么时候会用到函数

需要多次去使用, 又不需要一直使用的

def choice_hero():
    """第一把选择安其拉"""
    pass

def choice_hero():
    """第二把选择王昭君"""
    pass

def choice_hero():
    """第三把选择安其拉"""
	pass

def choice_hero(poke_list):
    """第四把选择王昭君"""
	pass

def choice_hero():
    """第五把选择安其拉"""

2. 函数参数

2.1 参数

在定义函数时,如果在括号中添加变量,我们称它为函数的形式参数:

  • 必需参数
  • 关键字参数
  • 默认参数
  • 不定长参数
必需参数

必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

调用 choice_hero() 函数,你必须传入一个参数,不然会出现语法错误:

def cho(str):
    """放屁如打雷, 轰天裂地罗三炮"""
    print(str)

cho()  # TypeError: cho() missing 1 required positional argument: 'str'

2.2默认参数

def func(a1, a2, a3=10):
    print(a1 + a2 + a3)


# 位置传参
func(8, 19)
func(1, 2, 99)

# 关键字传参(位置和关键混合时,关键字传参要在后面)
func(12, 9, a3=90)
func(12, a2=9, a3=90)
func(a1=12, a2=9, a3=90)

2.3 动态参数

  • 一个 "*"号,
def func(*args):
    print(args) # 元组类型 (22,)   (22,33,99,) ()

# 只能按照位置传参
func(22)
func(22,33)
func(22,33,99)
func()
  • 两个"**"号
def func(**kwargs):
    print(kwargs) # 字典类型 {"n1":"Kevin"}    {"n1":"Kevin","age":"18","email":"Kevin@163.com"}  {}
    
# 只能按关键字传参
func(n1="Kevin")
func(n1="Kevin",age=18)
func(n1="Kevin",age=18,email="Kevin@163.com")
  • 一个*和两个**一起使用

    def func(*args,**kwargs):
        print(args,kwargs)
     
    
    func(22,33,99)
    func(n1="Kevin",age=18)
    func(22,33,99,n1="Kevin",age=18)
    func()
    
    输出结果:
    (22, 33, 99) {}
    () {'n1': 'Kevin', 'age': 18}
    (22, 33, 99) {'n1': 'Kevin', 'age': 18}
    () {}
    

    注意事项

    # 1. ** 必须放在 * 的后面
    def func1(*args, **kwargs):
        print(args, **kwargs)
    
    
    # 2. 参数和动态参数混合时,动态参数只能放在最后。
    def func2(a1, a2, a3, *args, **kwargs):
        print(a1, a2, a3, args, **kwargs)
    
    
    # 3. 默认值参数和动态参数同时存在
    def func3(a1, a2, a3, a4=10, *args, a5=20, **kwargs):
        print(a1, a2, a3, a4, a5, args, kwargs)
    

3. 参数返回值

函数外部的代码要想获取函数的执行结果,就可以在函数里用return语句把结果返回

def stu_register(name, age, course='PY' ,country='CN'):
    print("----注册学生信息------")
    print("姓名:", name)
    print("age:", age)
    print("国籍:", country)
    print("课程:", course)
    if age > 22:
        return False
    else:
        return True

registriation_status = stu_register("王山炮",22,course="PY全栈开发",country='JP')

if registriation_status:
    print("注册成功")

else:
    print("too old to be a student.")

注意

  • 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束

  • 如果未在函数中指定return,那这个函数的返回值为None

  • 函数一旦遇到return就会立即退出函数(终止函数中的所有代码)

    def func():
        print(1)
        return "结束吧"
    	print(2)
        
    ret = func()
    print(ret)
    
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值