美文网首页
Python基础学习day3|函数

Python基础学习day3|函数

作者: 习惯芥末味 | 来源:发表于2018-04-10 11:33 被阅读0次

    函数

    函数是带名字的代码块,用于完成具体的工作。要执行函数定义的特定任务,可调用该函数。需要在程序中多次执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用执行该任务的函数,让Python运行其中的代码。

    定义函数

    定义函数的关键字:def,由此来告诉Python这是一个函数。

    代码示例:

    >>> def hello_user():
        """函数体说明部分"""   #此处为文档字符串注释
        mes=("你好世界!")
        print(mes)
    
    >>> hello_user()
    

    执行结果:

    你好世界!
    

    def关键字定义函数;hello_user()是该函数的函数名;冒号定义结尾;冒号后面到缩进结尾表示该函数的函数体,也就是函数需要做什么。上述函数就是打印一个变量。执行结果为:你好世界。而最后一行表示调用函数名为hello_user()的函数。

    向函数传递信息

    在函数名后面的括号可以进行传参操作,例如传入简单的用户名。

    代码示例:

    def get_user(username):
        """用户信息"""
        print("我的名字叫: " + username)
        
    get_user("你好我是函数")
    

    执行结果:

    我的名字叫:你好我是函数
    

    实参和形参

    方法在定义的时候的参数称为形参,函数完成其工作所需的一项信息;函数在调用的时候传入的参数称为实参。

    例如在上面的代码中,get_user(username)username形参,而调用的时候输入你好我是函数实际参数

    传递实参

    鉴于函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参的方式很多,可使用位置实参,这要求实参的顺序与形参的顺序相同;也可使用关键字实参,其中每个实参都由变量名和值组成;还可使用列表和字典。

    位置实参

    调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此,最简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参。

    def get_user(type,value):
        """用户信息"""
        print("我的" + type + "是: " + value)
        
    get_user("年龄",'18')
    

    根据type的类型传入的值,输入不一样的结果。传入的年龄就存入函数的type变量中,18就存入value变量中。这样就能够完整的输出。结果为:我的年龄是: 18

    根据这个结果可以推出,该函数可以被多次调用。例如:

    def get_user(type,value):
        """用户信息"""
        print("我的" + type + "是: " + value)
        
    get_user("年龄",'18')
    get_user("体重",'100')
    get_user("身高",'180')
    get_user("性别",'男')
    

    输出的结果是:

    我的年龄是: 18
    我的体重是: 100
    我的身高是: 180
    我的性别是: 男
    

    需要注意的是传参的位置很重要。如果传参顺序出错,就容易出现笑话。

    例如:

    >>>def get_user(type,value):
        """用户信息"""
        print("我的" + type + "是: " + value)
        
    >>>get_user("年龄",'18')
    >>>get_user("100",'体重')
    >>>get_user("100",'身高')
    >>>get_user("男",'性别')
    

    运行的结果:

    我的年龄是: 18
    我的100是: 体重
    我的100是: 身高
    我的男是: 性别
    

    关键字实参

    关键字实参是传递给函数的名称—值对。直接在实参中将名称和值关联起来了,因此向函数传递实参时不会混淆。关键字实参让你无需考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个值的用途。

    代码示例:

    >>>def get_user(type,value):
        """用户信息"""
        print("我的" + type + "是: " + value)
        
    >>>get_user("年龄",'18')
    >>>get_user(value="18",type = 'age')
    

    运行结果

    我的年龄是: 18
    我的age是: 18
    

    默认值

    编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,Python将使用 指定的实参值;否则,将使用形参的默认值。因此,给形参指定默认值后,可在函数调用中省略相应的实参。使用默认值可简化函数调用,还可清楚地指出函数的典型用法。

    代码示例:

    def get_user(type,value = '19'):
        """用户信息"""
        print("我的" + type + "是: " + value)
        
    get_user("年龄",'18')  # value传值为18
    get_user("年龄")  #没有传值,获取默认值
    

    运行结果:

    我的年龄是: 18
    我的年龄是: 19
    

    使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的实参。 这让Python依然能够正确地解读位置实参。

    等效的函数调用

    鉴于可混合使用位置实参、关键字实参和默认值,通常有多种等效的函数调用方式。基于这种定义,在任何情况下都必须给函数提供实参;同样,指定该实参时可以使用位置方式,也可以使用关键字方式。

    返回值

    函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值。在函数中,可使用return语句将值返回到调用函数的代码行。返回值让你能够将程序的大部分繁重工作移到函数中去完成,从而简化主程序。

    返回简单值
    代码示例:

    def get_user_info(type,info):  #传递两个形参
        """返回用户信息"""
        user_info =  "我的" + type + "是: " + info  #将type和info存放到user_info中
        return user_info.title()  #user_info的值转换首字母大写
    
    my = get_user_info('身高','190')  #提供变量my,将返回值存放进去
    print(my)   #打印返回值
    

    运行结果:

    我的身高是: 190
    

    返回一条字符串类型的用户的信息,然后赋值给变量user_info,最后打印输出。

    让实参变成可选的

    在某些时候我们的参数可能不是必选,但是需要设置默认值就可以决定是否需要传参。
    代码示例:

    >>> 
    def get_name(first_name,last_name,middle_name=''): #中间名字可选
        """返回全名"""
        if middle_name:  #有中间名字的情况
            full_name=first_name+' '+middle_name+' '+last_name
        else:  #没有的情况
            full_name=first_name+'  '+last_name
        return full_name.title()
    
    >>> my_name=get_name('jimi','json')  #没有中间的名字
    >>> print(my_name)
    
    >>> my_name=get_name('jimi','json','lee')  #有中间的名字
    >>> print(my_name)
    

    运行结果:

    Jimi Json
    Jimi Lee Json
    

    返回字典

    将用户的信息存储在字典中。

    def build_person(first_name, last_name): 
        """返回一个字典,其中包含有关一个人的信息"""
        person = {'first': first_name, 'last': last_name}
        return person
    
    musician = build_person('jimi', 'hendrix')
    print(musician)
    

    运行结果:

    {'first':'jimi', 'last':'hendrix'}
    

    同时该字典还可以不断的增加。例如新增返回年龄。

    调用函数:

    def build_person(first_name, last_name,age=''): 
        """返回一个字典,其中包含有关一个人的信息"""
        person = {'first': first_name, 'last': last_name}
        if age:
            person['age'] = age
        return person
     
    musician = build_person('jimi', 'hendrix',age=19)
    print(musician)
    

    返回结果:

    {'first': 'jimi', 'last': 'hendrix', 'age': 19}
    

    相关文章

      网友评论

          本文标题:Python基础学习day3|函数

          本文链接:https://www.haomeiwen.com/subject/ptswhftx.html