python-函数

函数的作用

函数定义

  • def:函数定义关键词
  • function_name:函数名称
  • ():参数列表放置的位置,可以为空
  • parameter_list:可选,指向向函数中传递的参数
  • comments:可选,为函数定制注释
  • def func_name([parameter_list]):
        ['''comments''']//函数的功能注释
        ['''func_body''']//函数体
    
    def func_demo():
        '''打印一句话'''
        print('这是一个函数')
    def func_with_params(a,b,c)
        '''传递参数的函数'''
        print(f"传入的参数为:a = {a},b = {b},c = {c}")
    
    #打印函数 comments 的内容
    print(func_with_params.__doc__)
    help(func_with_params)

    tips:自动调整行缩进,使用ctrl+alt+L即可

  • print(f"")用法:主要作用就是格式化字符串,加f后可以在字符串里面使用花括号括起来的变量和表达式,使花括号里的变量和表达式也能用字符串来表示

  • 以下是定义空函数:

  • #定义空函数
    def filter_char(s):
        pass
    
    def filter_char(s):
    #如果没有函数体的话,会产生报错
    
    以下是报错的内容:
    def filter_char(s):
        IndentationError: expected an indented block after function definition on line 143
        

函数调用

  • function_name:函数名称
  • parameter_value:可选,指定各个参数的值
function_name([parameter_value])

参数传递

  • 形式参数:定义函数时,函数名称后面括号中的参数
  • def demo_func(a,b,c)
        print(a,b,c) //a,b,c为形式参数
    
    demo_func(1,2,3)//1,2,3 为实际参数
  • 实际参数:调用函数时,函数名称后面括号中的参数
  • 位置参数:
    • 参数的数量与定义时必须一致
    • 参数的位置必须与定义时一致
def person(name,age):
    if age >= 18:
        print(f'{name}此人已经成年,今年已经{age}岁')
    else:
        print(f'{name}此人还未成年,今年已经{age}岁')

person('kiky',19)#位置传参
person(name=shaoqi,age=21)

运行结果是:kiky此人已经成年,今年已经19岁

 为参数设置默认值

  • 定义函数时可以指定形式参数的默认值
  • 指定默认值的形式参数必须放在所有参数的最后,否则会产生语法错误
  • param = default_value:可选,指定参数并且为该参数设置默认值为default_value
def person(name,age,nationality = 'china')#默认参数要放到最后面
    print(f'国籍试是{nationality}')
    if age >= 18:
        print(f'{name}此人已经成年,今年已经{age}岁')
    else:
        print(f'{name}此人还未成年,今年已经{age}岁')


运行结果是:
国籍试是china
kiky此人已经成年,今年已经19岁

 默认参数定义对象一定要用不可变参数(数字,字符串,元组,不可变集合),不能用可变对象(列表,字典)

#错误示范,传入一个可变对象给默认参数,默认值为空列表
def wrong_demo(a,b,c = []):
    c.append(a)
    c.append(b)
    print(a,b,c)

wrong_demo(1,2)

运行结果是:1 2 [1, 2] 此时的默认参数已经发生变化了 代码就不可控了

函数返回值

def sum(a,b):
    result = a+b
    return result,a,b   #返回值是一个元组

r = sum(1,2)
print(r)


返回值是一个元组:(3, 1, 2)

可变参数

  • 可变参数也称为不定长参数
  • 传入函数中实际参数可以是任意多个
  • 常见形式
  • *args//位置传参
  • #*args 接受任意多个实际参数,并将其放在一个元组中
    def print_lanuage(*args):
        print(args)
        for i in args:
            print(i)
    
    #调用函数,将不同数量的参数传递进去,用位置参数
    print_lanuage('python','java')
    print_lanuage('python','java','PHP','GO')
    lan = ['python','java','PHP']
    print_lanuage(*lan) #在这加*实际意义上相当于将列表中的元素解包,使其一个一个传入进函数当中
    
    
    运行结果是:
    ('python', 'java')
    python
    java
    ('python', 'java', 'PHP', 'GO')
    python
    java
    PHP
    GO
    ('python', 'java', 'PHP')
    python
    java
    PHP
    
  • **kwargs//关键字传参
    • 接受任意多个类似关键字参数一样显示赋值的实际参数,并将其放到一个字典中
    • 使用已经存在字典作为函数的可变参数,可以在字典的名称前加**
def print_info(**kwargs):
    print(kwargs)


print_info(Tom=18, jim=20, Lily=12)
params = {'tommy': 18, 'kiky': 14}
print_info(**params)

运行结果是:
{'Tom': 18, 'jim': 20, 'Lily': 12}
{'tommy': 18, 'kiky': 14}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值