天天看点

Python----函数

Python学习之路,点击有全套Python笔记

函数就是将一段具有独立功能的代码块整合到一个整体并命名,在需要的位置调用这个名称即可完成对应的需求,可以实现更高效的代码复用

1. 基础用法

定义语法:

def 函数名([参数列表]):

“文档字符串” (注释)

函数体/若干语句

def test():
    print('hello world')
test()  # hello world
           

2. 形参与实参

  • 先来体验一下传参
def test(name):
    print(f'hello {name}')
test('bob')  # hello bob
           
简单的说:
  • 形参:定义函数时使用,当作局部变量(name)
  • 实参:调用时,传递的叫实参(bob)
其中,实参又有细分
  • 位置实参:调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参,为此,最简单的关联方式是基于实参的顺序,这种关联方式称为位置实参。
  • 关键字实参:是传给函数的名称—键值对。直接在实参中将名称和值关联起来了,因此向函数传递实参时不会混淆。关键字实参无序考虑调用顺序,还清楚地指出了函数调用各个值的用途
  • 不定长参数(可变参数):用于不确定调⽤的时候会传递多少个参数(不传参也可以)的场景。

①. 位置实参(顺序必须是对的)

def Dog(type, name):
    print(f'这是一条{type},名字叫{name}')
Dog('二哈','旺财')  # 这是一条二哈,名字叫旺财
Dog('汪汪', '泰迪')  # 这是一条汪汪,名字叫泰迪(很明显有哪里不对劲)
           

②.关键字实参

def Dog(type, name):
    print(f'这是一条{type},名字叫{name}')
Dog(type='边牧',name='哈哈')  # 这是一条边牧,名字叫哈哈
Dog(name='哈哈',type='边牧')  # 这是一条边牧,名字叫哈哈
           

③.不定长参数

def makefood(*topping):
    print(f'我的菜里不要{topping}')
makefood('香菜',)  # 我的菜里不要('香菜',)
makefood('香菜','大蒜')  # 我的菜里不要('香菜', '大蒜')

def user_info(**kwargs):
    print(kwargs)
user_info(name='tom',job='doctor')  # {'name': 'tom', 'job': 'doctor'}
           

3.默认值

默认值就是在定义函数时给形参一个默认的值。注意:如果前一个有默认值,则后面必须都有默认值,也就是必须先列出没有默认值的形参,再列出有默认值的
def Pet(pet_name, type='dog'):
    print(f'this is a {type} name is {pet_name}')
Pet('哈哈')  # this is a dog name is 哈哈
Pet('咪咪', 'cat')  # this is a cat name is 咪咪
           

4. 返回值

函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回的值称为返回值—return,返回值可以简化主程序。

return返回值要点

1.如果函数中包含return语句,则结束函数执行并返回值

2.如果函数体中不包含return语句,则返回None值

3.要返回多个返回值,使用列表、元组、字典、集合将多个值“存起来”

  • 基本使用
def sum (a, b):
    c = a + b
    return c
a = sum(1,2)
print(a)  # 3
           
  • 返回字典
def user(name, job, moeny=''):
    person = {'Person_name': name, 'Person_job': job}
    if moeny:
        person['moeny'] = moeny
    return person
users = user('jack','doctor','rich')
print(users)  # {'Person_name': 'jack', 'Person_job': 'doctor', 'moeny': 'rich'}
           
  • 传递列表
def hello_user(names):
    for name in names:
        msg = "hello" + " " + name
        print(msg)
hello_user(['jack','rose','bob'])
           

5. 在函数中修改列表

# 学习函数
def langue(langue_list, learn_list):
    while langue_list:
        learn = langue_list.pop()
        print(f'正在学习{learn}')
        learn_list.append(learn)

# 汇报函数
def show(langue_list):
    for i in langue_list:
        print(f'学会了{i}')

langue_list = ['python', 'c++', 'java']
learn_list = []

langue(langue_list, learn_list)
while langue_list==[]:
    show(learn_list)
    break