• python进阶(5)--函数


    文档目录:

    一、函数体
    二、实参与形参
    三、返回值
    四、举例:函数+while循环
    五、举例:列表/元组/字典传递
    六、模块与函数的导入

    ---------------------------------------分割线:正文--------------------------------------------------------

    一、函数体

    1、定义删除

    def green_user():
        """显示简单的问候语"""
        print("hello world!")
    green_user()

    查看结果:

    hello world!

    2、函数传递信息

    def green_user(username):
        """显示简单的问候语"""
        print( f"Hello,{username.title()}!" )
    green_user("Lucy")

    查看结果:

    Hello,Lucy!

     

    二、实参与形参

    1、概念

    def green_user(username):
        """显示简单的问候语"""
        print( f"Hello,{username.title()}!" )
    green_user("Lucy")

    形参:username

    实参:"Lucy"

    2、位置实参,且支持多次调用

    def describe_pet(animal_type,pet_name):
        """显示宠物的信息"""
        print(f"I have a {animal_type}")
        print(f"My {animal_type}'s name is {pet_name}")
    describe_pet('dog','Mary')
    describe_pet('cat','Little White')

    查看结果:

    I have a dog
    My dog's name is Mary
    I have a cat
    My cat's name is Little White

    3、实参中将名称和值关联起来

    def describe_pet(animal_type,pet_name):
        """显示宠物的信息"""
        print(f"I have a {animal_type}")
        print(f"My {animal_type}'s name is {pet_name}")
    describe_pet(animal_type='dog',pet_name='Mary')

    查看结果:

    I have a dog
    My dog's name is Mary

    4、默认值,需放在形参最后

    def describe_pet(pet_name,animal_type='cat'):
        """显示宠物的信息"""
        print(f"I have a {animal_type}")
        print(f"My {animal_type}'s name is {pet_name}")
    describe_pet(pet_name='Mary')
    describe_pet('Big White')

    查看结果:

    I have a cat
    My cat's name is Mary
    I have a cat
    My cat's name is Big White

     

    三、返回值

    1、返回简直值:return

    def get_formatted_name(first_name,last_name):
        """返回全名,并且首字母大写"""
        full_name=f"{first_name} {last_name}"
        return full_name.title()
    name=get_formatted_name("mike","jackson")
    print(name)

    查看结果:

    Mike Jackson

    2、实参可选

    def get_formatted_name(first_name,last_name,middle_name=''):
        """返回全名,并且首字母大写"""
        full_name=f"{first_name} {middle_name} {last_name}"
        return full_name.title()
    name1=get_formatted_name("mike","jackson",'midddd')
    name2=get_formatted_name("mike","jackson")
    print(name1)
    print(name2)

    3、返回字典

    def build_person(first_name,last_name):
        """返回一个字段"""
        persion={'first':first_name,'last':last_name}
        return persion
    dicttest1=build_person('xiao','long')
    print(dicttest1)

    查看结果:

    {'first': 'xiao', 'last': 'long'}

     

    四、举例:函数+while循环

    def get_formatted_name(first_name,last_name):
        """返回全名,并且首字母大写"""
        full_name=f"{first_name} {last_name}"
        return full_name.title()
    while True:
        print("Please tell me your name:")
        print("(enter 'q' at any time to quit)")
        f_name=input("First name:")
        if f_name=='q':
            break
        l_name=input("Last name:")
        if l_name=='q':
            break
        formatted_name=get_formatted_name('mike','jackson')
        print(f"
    hello,{formatted_name}!")

    查看结果:

    Please tell me your name:
    (enter 'q' at any time to quit)
    First name:mike
    Last name:jackson
    
    hello,Mike Jackson!
    Please tell me your name:
    (enter 'q' at any time to quit)
    First name:tom
    Last name:q

     

    五、举例:列表/元组/字典传递

    1、传递列表

    def greet_users(names):
        """向列表中的每位用户发出简单的问候"""
        for name in names:
            msg=f"Hello,{name.title()}!"
            print(msg)
    username=['bk','anna','tom','mary']
    greet_users(username)

    查看结果:

    Hello,Bk!
    Hello,Anna!
    Hello,Tom!
    Hello,Mary!

     2、在函数中修改列表

    unconfirmed_users=['alice','brian','candace']
    confirmed_users=[]
    
    def confirmed(unconfirmed_users,confirmed_users):
        while unconfirmed_users:
            current_user = unconfirmed_users.pop()
            print( f"Verfying users:{current_user.title()}" )
            confirmed_users.append( current_user )
        # 显示所有验证的用户
    def print_confirmed_users(confirmed_users):
        print( "
    The following users have been confirmed!" )
        for confirm_user in confirmed_users:
            print( confirm_user.title() )
    
    confirmed(unconfirmed_users,confirmed_users)
    print_confirmed_users(confirmed_users)
    print(unconfirmed_users)

    查看结果:

    Verfying users:Candace
    Verfying users:Brian
    Verfying users:Alice
    
    The following users have been confirmed!
    Candace
    Brian
    Alice
    []

    3、优化:函数修改原列表

    #将列表的副本传递给函数
    unconfirmed_users=['alice','brian','candace']
    confirmed_users=[]
    
    def confirmed(unconfirmed_users,confirmed_users):
        while unconfirmed_users:
            current_user = unconfirmed_users.pop()
            print( f"Verfying users:{current_user.title()}" )
            confirmed_users.append( current_user )
        # 显示所有验证的用户
    def print_confirmed_users(confirmed_users):
        print( "
    The following users have been confirmed!" )
        for confirm_user in confirmed_users:
            print( confirm_user.title() )
    
    confirmed(unconfirmed_users[:],confirmed_users)
    print_confirmed_users(confirmed_users)
    print(unconfirmed_users)

    查看结果:原列表不会修改

    Verfying users:Candace
    Verfying users:Brian
    Verfying users:Alice
    
    The following users have been confirmed!
    Candace
    Brian
    Alice
    ['alice', 'brian', 'candace']

    4、传递任意数量的实参(元组)

    #*号可以生成一个空元组,封装接收的所有值
    def make_pizza(*toppings):
        """打印顾客点的所有配料"""
        print(toppings)
    make_pizza('pepperoni')
    make_pizza('mushrooms','chesse','green peppers')

    查看结果:

    ('pepperoni',)
    ('mushrooms', 'chesse', 'green peppers')

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

    def make_pizza(size,*toppings):
        """打印顾客点的所有配料"""
        print(f"Making a {size}-inch pizza with the folowing toppings")
        for topping in toppings:
            print(f'-{topping}')
    make_pizza(16,'pepperoni')
    make_pizza(12,'mushrooms','chesse','green peppers')

    查看结果:

    Making a 16-inch pizza with the folowing toppings
    -pepperoni
    Making a 12-inch pizza with the folowing toppings
    -mushrooms
    -chesse
    -green peppers

    6、使用任意数量的关键字实参(字典)

    #**可以生成一个空字典
    def build_profile(first,last,**user_info):
        """创建一个字典,其中包含有关用户的信息"""
        user_info['first_name']=first
        user_info['last_name']=last
        return user_info
    user_profile=build_profile('albert','master',location='princeton',field='physics',number=1)
    print(user_profile)

    查看运行结果:

    {'location': 'princeton', 'field': 'physics', 'number': 1, 'first_name': 'albert', 'last_name': 'master'}

    六、模块与函数的导入

    1、导入模块

    import test04_function
    test04_function.make_pizza(13,'prpperono')
    test04_function.make_pizza(10,'prpperono','cheese','mushrooms')

    查看结果:

    Making a 13-inch pizza with the folowing toppings
    -prpperono
    Making a 10-inch pizza with the folowing toppings
    -prpperono
    -cheese
    -mushrooms

    2、导入特定的函数

    from test04_function import make_pizza
    make_pizza(10,'prpperono','cheese','mushrooms')

    3、使用as给函数指定别名

    from test04_function import make_pizza as mp
    mp(10,'prpperono','cheese','mushrooms')

    4、使用as给模块执行别名

    import test04_function as pizza
    pizza.make_pizza(10,'prpperono','cheese','mushrooms')

    5、导入模块中的所有函数

    from test04_function import *
  • 相关阅读:
    pikachu——Unsafe Filedownload Fileupload(不安全的文件下载和上传)
    pikachu——Files Inclusion(文件包含漏洞)
    pikachu——RCE
    pikachu——SQL注入
    pikachu——XSS(跨网站脚本漏洞)
    pikachu——CSRF
    pikachu——暴力破解
    GCD 信号量 dispatch_semaphore_t
    【转】iOS 9 Storyboard 教程(一上)
    一个大小为N的数组,里面是N个整数,怎样去除重复的数
  • 原文地址:https://www.cnblogs.com/mrwhite2020/p/14669304.html
Copyright © 2020-2023  润新知