Python_函数

函数

定义函数

def greet_user():
    """显示简单的问候语"""
    print("吃了吗?")
    
greet_user()	#调用函数

这个案例演示了一个最简单的函数结构,使用关键字def来告诉python你要定义一个函数。

向函数传递信息

def greet_user(user_name):
    """显示简单的问候语"""
    print("吃了吗?" + user_name.title() + "!")
    
greet_user('friday')

实参和形参

在函数greet_user()中,变量username是一个形参;
在代码greet_user(‘friday’)中,值’friday’是一个实参;

传递实参

向函数传递实参的方式很多,可使用位置实参,这要求实参的顺序与形参的顺序相同。也可以使用关键字实参,其中每个实参都由变量名和值组成,还可以使用列表和字典。
下面依次介绍:

位置实参

def pets(animal_type,animal_name):
    print("I have a " + animal_type + ".")
    print("And its name is " + animal_name + ".")
    
pets('cat','harry')

调用函数多次

pets('dog1','jack1')
pets('dog2','jack2')

位置实参的顺序很重要

pets('jack','dog')

关键字实参

关键字实参是传递给函数的名称-值对。

def pets(animal_type,animal_name):
    print("I have a " + animal_type + ".")
    print("And its name is " + animal_name + ".")

pets(animal_type='fish',animal_name='tom')

打乱顺序没影响
注意: 使用关键字实参时,无比准确的指定函数定义中的形参名。

pets(animal_name='tom',animal_type='fish')

默认值

编写函数时,可给每个形参指定默认值;
在调用函数中给形参提供了实参时,python将指定实参值;
否则,将使用形参的默认值;

def pets(animal_type,animal_name='tom'):
    print("I have a " + animal_type + ".")
    print("And its name is " + animal_name + ".")

pets(animal_type='dog')
pets(animal_type='fish',animal_name='jack')

返回值

返回简单值

def user_info(frist_name,last_name):
    """返回姓名"""
    full_name = frist_name.title() + last_name.title()
    return full_name
    
get_full_name = user_info('zulpikar','tursun')
print(get_full_name)

让实参变成可选

def user_info(frist_name,middle_name,last_name):
    full_name = frist_name + ' ' + middle_name + ' ' + last_name
    return full_name.title()
    
get_full_name = user_info('zulpikar','d','tursun')
print(get_full_name)

然而并非所有人都中间名字

def user_info(frist_name,middle_name,last_name=''):
    if middle_name:
        full_name = frist_name + ' ' + middle_name + ' ' + last_name
    else:
        full_name = frist_name + ' ' + last_name
    return full_name.title()
    
get_full_name = user_info('zulpikar','d','tursun')
print(get_full_name)

get_full_name = user_info('sherlock','holmes')
print(get_full_name)

返回字典

函数可返回任何类型的值,包括列表和字典等比较复杂的数据结构。

def user_info(frist_name,last_name):
    """返回一个字典,其中包含用户的姓名"""
    user = {
        'frist_name':frist_name,
        'last_name':last_name
        }
    return user
    
user_0 = user_info('zulpikar','tursun')
print(user_0)

练习

练习1

def user_info(name,id,password,tel,age='',qq=''):
    user = {
        'name':name,
        'id':id,
        'password':password,
        'tel':tel
        }
    
    if age:
        user['age'] = age
    if qq:
        user['qq'] = qq
    return user
    
user_0 = user_info('holmes','123213','235f2d','13109923220',qq='1238372943')
print(user_0)

user_0 = user_info('holmes','123213','235f2d','13109923220',qq='1238372943',age='22')
print(user_0)

练习2-结合使用函数和while循环

def user_info(user_name,user_id):
   user = {
       'user_name':user_name,
       'user_id':user_id
       }
   return user

while True:
   u_name = input("\n请输入您的用户名:")
   u_id = input("\n请输入你的用户ID:")

   get_u_info = user_info(u_name,u_id)
   print(get_u_info)

传递列表

01

def user(names):
    for name in names:
        print("Hello!" + name + ".")
        
user_names = ['zulpikar','sherlock','friday']
user(user_names)

#02
def user_list(users):
    for user in users:
        print("吃了吗:" + user)
        
users = ['A','B','C']
user_list(users)

02

def print_models(unprinted_designs,completed_model):
    while unprinted_designs:
        current_design = unprinted_designs.pop()
        print("准备打印的模型:" + current_design)
        completed_model.append(current_design)
        
def show_completed_models(completed_models):
    print("\n打印完成的模型:")
    for completed_model in completed_models:
        print(completed_model)
        
unprinted_designs = ['iphone 8','iphone X','iphone Xs','iphone 11','iphone 11pro']
completed_models = []

print_models(unprinted_designs,completed_models)
show_completed_models(completed_models)

练习2

def print_users(all_users,logined_users):
    while all_users:
        user = all_users.pop()
        print("准备登陆的用户:" + user)
        logined_users.append(user)
        
def show_logined_user(logined_users):
    print("\n已登陆的用户:")
    for logined_user in logined_users:
        print(logined_user)
        
all_users = ['zulpikar','friday','sherlock','monday']
logined_users = []

print_users(all_users,logined_users)
show_logined_user(logined_users)

传递任意数量的实参

def all_users(*users):
    print(users)
    
all_users('zulpikar')
all_users('friday','monday','diu')

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

def all_users(*users):
    print("所有用户:")
    for user in users:
        print("-" + user)
    
all_users('zulpikar')
all_users('friday','monday','diu')

结合使用位置实参和任意数量实参

如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。

def make_pizza(size,*toppings):
    print("做一个大小为" + str(size) + "寸的披萨。配料为:")
    for topping in toppings:
        print("-" + topping)

make_pizza(16,'辣椒','番茄酱')
make_pizza(14,'水果','牛肉')

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

两个星号**user_info让python创建一个名为user_info的空字典,并将收到的所有名称-值对都封装到这个字典中。

def build_profile(frist_name,last_name,**user_info):
    profile = {}
    profile['frist_name'] = frist_name
    profile['last_name'] = last_name
    for k,v in user_info.items():
        profile[k] = v
    return profile
    
user_profile = build_profile('zulpikar','tursun',id='23456',con='12345678')
print(user_profile)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值