zoukankan      html  css  js  c++  java
  • python -- 函数

    一、函数概述

    函数是一组已经定义好的,可以重复使用的代码,通过一个函数名封装起来,要想执行这个函数,只需要调用函数名即可

    定义函数的语法:

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

      语句块

      【return [表达式]】

    多个参数之间用逗号间隔,默认情况下,参数值和参数名称是按照函数声明去定义的顺序进行匹配的。

    如果return后面是空的,或者没有return语句,都会返回None,表示没有返回值

    定义个函数后,可以在另一个函数中调用执行,也可以在python控制台中执行

    # -----------------------------------------
    # 函数:一组定义好的,可以重复使用的代码。
    # -----------------------------------------
    # 定义一个简单的函数,没有参数,也没有返回值
    def hello():
    print("Hello python!")


    # 传入一个参数
    def welcome(name):
    print("Welcome, %s !" % name)


    # 传入参数列表,并返回一个值
    # width, height称为形参
    def area(width, height):
    return width * height


    w = 20
    h = 30
    # w, h称为实参
    rect_area = area(w, h)
    print("rect_area:", rect_area)


    # 可以返回多个值
    def return_xy(arg1, arg2):
    return arg1, arg2


    a, b = return_xy(20, 30)
    print(a, b)


    # 返回None
    def print_str(str_to_print):
    print(str_to_print)
    return


    # 通过判断语句决定要返回哪个值
    def get_level(score):
    if score >= 80:
    return 'A'
    elif score >= 60:
    return 'B'
    else:
    return 'C'


    print("等级为:", get_level(75))


    # 录入成绩,并且打印出相应的等级(函数的嵌套)
    def input_score():
    my_score = int(input("请输入成绩:"))
    level = get_level(my_score)
    print("分数:{} 等级:{}".format(my_score, level))


    # 不可变对象(数字、字符串、元组)
    a = 5
    print(id(a))
    a = 10 #更新变量值,抛弃之前的变量
    print(id(a))

    # 可变对象(列表、字典、集合)
    b = [1, 2, 3]
    print(id(b)) #打印出的id都是一样的
    b[1] = 10
    print(id(b))


    def add_one(x):
    x += 1
    print("函数内的值:", x)


    # 给函数传递一个不可变对象
    y = 5
    add_one(y)
    print("函数外的值:", y)


    def reorder(score_list):
    score_list.sort()
    print("函数内的值:", score_list)


    # 给函数传递一个可变对象
    scores = [98, 90, 76, 89, 85]
    reorder(scores)
    print("函数外的值:", scores)


    二、参数
    调用函数时可以使用的参数类型有:
    A、必须参数:调用函数时必须以正确的顺序传入函数
    B、关键字参数:通过参数值来匹配参数值,,顺序可与声明时不一致
    C、默认参数:给参数设置一个默认值,如果没有传递对应的参数值,则使用默认的参数值
    D、不定长参数:参数个数不确定,以元组或字典的形式导入未知的变量参数

    不同的参数类型可以混合使用,但参数定义的顺序必须是:必需参数、默认参数、可变参数和关键字参数

    # 定义了一个必需参数和两个默认参数
    def print_info(name, age=12, school='明德'):
    print("姓名:{} 年龄:{} 学校:{}".format(name, age, school))


    print_info('李佳欣')
    print_info('李佳欣', 15)
    print_info('李佳欣', 15, '执信')
    print_info('李佳欣', school='二中')
    print_info(age=13, name='张宇')


    # 定义不定长参数
    # 加了一个星号的参数(以元组的形式导入)
    def print_list(group, *members):
    print("小组:{} 成员:{}".format(group, members))


    print_list('成长组', '张磊', '李静', '陈晓', '肖亮')


    # 加了两个星号的参数(以字典的形式导入)
    def print_dict(name, **infos):
    print("姓名:{} 信息:{}".format(name, infos))


    print_dict('张雨婷', sex='女', age=12, grade='初一')


    三、匿名函数
    可以使用lambda来创建匿名函数:
      lambda【arg1[,arg2....argn]】:表达式
    lambda只是一个表达式,而不是代码块,函数体比较简单,可以用来实现简单的逻辑。
    lambda函数拥有自己的命令空间,只能访问它自己的参数列表,不能访问全局命令空间里的参数
    PEP 8命令规范并不推荐使用匿名函数,仍然建议用def定义函数。

    # 匿名函数
    # lambda [arg1 [,arg2,.....argn]]:expression
    sumfun = lambda arg1, arg2: arg1 + arg2


    print("两数之和为:", sumfun(100, 200))


    四、全局变量&局部变量
    A、变量的访问权限决定于这个变量在哪里赋值。
    B、根据作用域的不同,变量分为全局变量和局部变量。
    C、在函数之外定义的变量属于全局变量,可以在函数内部使用全局变量。
    D、在函数中定义的变量,是局部变量,只能在声明它的函数中进行访问,在外部不能访问。
    当函数中定义的变量名称与全局变量名称相同时,函数内定义的变量不会改变全局变量的值。
    如果要在函数内改变全局变量的值,就必须使用global关键字。

    def reorder1():
    # 在函数内部使用全局变量
    scores1.sort()
    print("函数内的值:", scores1)


    # 全局变量
    scores1 = [98, 90, 76, 89, 85]
    reorder1(scores1)
    print("函数外的值:", scores1) #由于列表是可变对象,则打印出数据跟随变化


    # 如果要在函数内改变全局变量的值,必须使用global关键字
    def double():
    global g
    g = g * 2
    print("函数内的值:", g)


    g = 5
    double()
    print("函数外的值:", g)
  • 相关阅读:
    杂文: 日剧《轮到你了》第7集中的组合数学问题
    CF 板刷总结
    【题解】P2324 [SCOI2005]骑士精神
    【模板】 $ ext{K}$ 短路
    P4554 小明的游戏
    [题解]P1856 [USACO5.5]矩形周长Picture
    洛谷P2243 电路维修
    【题解】洛谷P3660 [USACO17FEB]Why Did the Cow Cross the Road III
    【题解】P1119 灾后重建
    集福卡活动
  • 原文地址:https://www.cnblogs.com/Teachertao/p/11217755.html
Copyright © 2011-2022 走看看