Python学习笔记7(函数)

第七章 函数

7.1 定义函数
使用关键字def来定义一个函数。

def greet_user():
    print("Hello")

# 调用函数
greet_user()    

7.1.1 实参和形参

def greet_user(username):
    print("Hello" + username)

# 调用函数
greet_user('chenjiahe')  

在函数greet_user中,username变量是形参----函数完成其工作所需要的一项信息。
在调用函数中的chenjiahe是实参----调用函数时要传递给函数的值。

7.2 传递实参
向函数传递实参的方式有很多:
位置实参----实参的顺序与形参的顺序相同
关键字实参----每个实参都由变量名和值组成。

7.2.1 位置实参

def describe_pet(animal_type, pet_name):
    print("宠物类型:" + animal_type + "\n")
    print("宠物名字:" + pet_name)
# 在调用函数时,实参的顺序要和形参的顺序相对应。    
describe_pet('哈士奇', 'mango')    

7.2.2 关键字实参

def describe_pet(animal_type, pet_name):
    print("宠物类型:" + animal_type + "\n")
    print("宠物名字:" + pet_name)
# 在调用函数时,要指定形参和对应的实参。顺序无关紧要。    
describe_pet(animal_type = '哈士奇', pet_name = 'mango') 

7.2.3 给形参指定默认值

def describe_pet(animal_type, pet_name='mango'):
    print("宠物类型:" + animal_type + "\n")
    print("宠物名字:" + pet_name)
    #使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参。    
describe_pet(animal_type = '哈士奇') 

7.3 返回值
函数并非总是直接显示输出,它可以处理一些数据,并返回一个或一组值。

def get_formatted_name(first_name, last_name):
    """返回完整的名字"""
    full_name = first_name + last_name
    return full_name

get_formatted_name('chen', 'jiahe')
print(get_formatted_name)

7.3.1 让实参变为可选

def get_formatted_name(first_name, last_name, middle_name=''):
    """返回完整的名字"""
    if midlle_name:
        full_name = first_name + middle_name + last_name
    else:
        full_name = first_name + last_name    
    return full_name

get_formatted_name('chen', 'he')
print(get_formatted_name)
get_formatted_name('chen', 'he', 'jia')
print(get_formatted_name)

7.3.2 返回字典

def build_person(first_name, last_name):
    """返回一个字典,其中包含某个人的信息"""
    # 将形参收到的值放进字典的值中
    person = {
    
    'first': first_name, 'last': last_name}
    return person
    
build_person('chen', 'hua')
print(person)    

7.3.3 结合使用函数和while循环

def get_formatted_name(first_name, last_name):
    full_name = first_name + last_name
    return full_name

while True:
    print("请告诉我你的全名:")
    print("退出请输入q")
   
    f_name = input("请输入你的姓:")
   if f_name = 'q':
       break 
       
   l_name = input("请输入你的名:")
   if l_name = 'q':
       break   print("请告诉我你的全名:")
    print("退出请输入q")
   
    f_name = input("请输入你的姓:")
   if f_name = 'q':
       break 
       
   l_name = input("请输入你的名:")
   if l_name = 'q':
       break
formatted_name = get_formatted_name(f_name, l_name)
print(formatted_name) 

7.4 传递列表

def greet_users(names):
    """向列表中的每位用户发出问候"""
    for name in names:
        msg = "hello," + name + "!"
        print(msg)
usernames = ['chen', 'ma', 'zhang']
greet_users(usernames)    

7.5 传递任意数量的实参

def make_pizza(*topiings):
    print(toppings)
make_pizza('green peppers', 'mushrooms', 'extra cheese')    

形参名*toppings中的星号让python创建一个名为toppings的空元组,将收到的所有值都封装到这个元组中。

7.5.1 使用任意数量的关键字实参

def build_profile(first, last, **user_info):
    profile = {
    
    }
    profile['first_name'] = first
    profile['last_name'] = last
    for key, value in user_info.items():
        profile[key] = value
    return profile
user_profile = build_profile('chen', 'jiahe', sex='boy', location='china')
print(user_profile) 

形参**user_info中的星号是让python创建一个名为user_info的空字典。

猜你喜欢

转载自blog.csdn.net/weixin_43670190/article/details/106421530