• python笔记之函数


    python中函数定义是使用def进行定义,函数可以理解为 多个语句代码组成,用来实现单一或者相关功能的代码段,在程序中可以重复调用而无需编写重复代码。

    1 def add(a,b):  #定义一个函数
    2     c = a+b
    3     return c   #返回值,如果没有return语句,则返回值为None

    1、函数返回值

    函数返回值使用return关键字,可以返回多个值,若没有return语句,则返回值为None

    2、函数参数:形参、实参

    形参为函数定义时使用的参数名,实参为具体调用时的参数名

    1 def add(a,b):  #a,b为形参
    2     c = a+b
    3     print(c)
    4     return c   
    5 
    6 
    7 a1=3  
    8 b1=4
    9 add(a1,b1) #a1,b1为实参

    传递不可变的数据对象,若函数内进行重新赋值实参数据对象值不会被改变

    1 def fun(a):
    2     a=12
    3     return a
    4 
    5 b=1
    6 print(fun(b))   #输出结果为12,参数b执行2,在传递给函数fun(b)时,按传值方式a复制b,因此a,b都指向2对象,在函数内a=12重新生成一个12对象,让a执行它
    7 print(b)  #输出结果为2

    传递可变的数据对象,若函数内进行重新赋值实参数据对象值被改变

    1 def fun(args):
    2     args.insert(1,'5') #在第二个位置插入'5'
    3     print(args)
    4 
    5 list1 = [1,2,3,4,5,6]
    6 fun(list1)
    7 print(list1)  #值被改变

    3、默认参数、动态参数

    若函数参数有默认值,则在调用时可以不传默认参数的值,此时使用默认值。当不清楚函数需要传输几个参数可以使用动态参数,一般分两种 :*args为元祖形式,**kwargs为字典形式

    1 1 def add(a,b=3):
    2 2     print(a+b)
    3 3 
    4 4 add(2)  #结果为5,此时b使用默认参数3
    5 5 add(2,5) #结果为7,此时b使用传输参数值5

    当函数同时存在必须参数、默认参数、*args、**kwargs参数时参数顺序如下:Python3参数顺序:必选参数,默认参数,*args,**kwargs

    1 def add(x,z=11,*args,**kwargs):
    2     print(x)
    3     print(z)
    4     print(args)
    5     print(kwargs)
    6 
    7 
    8 
    9 add(1,2,3,4,y=5,a=6,b=7) #结果为7,此时b使用传输参数值5

    执行结果:

    1 1
    2 2
    3 (3, 4)
    4 {'y': 5, 'a': 6, 'b': 7}

    4、局部变量和全局变量

    局部变量参数只能在函数内起作用,全局变量可以在整个模块中可以调用

     1 user = 'admin'  #全局变量
     2 
     3 def login():
     4     user = 'admin11'  #局部变量
     5     print(user)
     6 
     7 def info():
     8     global user
     9     user = 'admin22'
    10     print(user)
    11 
    12 
    13 login()  #结果为admin11
    14 print(user) #结果为admin
    15 info()  #结果为admin22
    16 print(user) #结果为admin22

    当函数内局部变量名与全局变量名一致时,优先使用局部变量

    5、lambda函数

    python中使用lambda创建匿名函数,所谓匿名即不使用def定义标准的函数,它是一个简单的表达式。lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

    语法如下:

    lambda [arg1[, arg2, ... argN]]: expression

    参数是可选的,如果使用的参数话,参数通常也是表达式的一部分

    1 1 add1  = lambda a,b:a+b #:a、b左侧为参数,右侧a+b为表达式且是返回之
    2 2 print(add1(4,5))

    6、函数实战

    6..实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统。

    要求1:使用一个list用于保存学生的姓名。
    要求2:输入0显示所有学员信息,1代表增加,2代表删除,3代表修改,4代表查询,exit代表退出学生管理系统。每一个功能定义一个自定义函数。界面如下:
    系统界面如下:
    -----------------------欢迎进入T666班学生管理系统-----------------------------
    请选择系统功能:
    0:显示所有学员信息
    1:添加一个学员信息
    2:删除一个学员信息
    3:修改一个学员信息
    4:查询一个学员信息
    exit:退出学生管理系统
    (0)输入0后效果如下:
    0
    ["郭易","汤碗珍"..]
    (1)输入1后效果如下:
    1
    请输入增加人的姓名:张三
    ["郭易","汤碗珍",'张三'..]
    (2)输入2后效果如下:
    2
    请输入删除人的姓名:张三
    ["郭易","汤碗珍"..]
    (3)输入3后效果如下:<注意:如果list中没有这个学员则打印:T666班没有这个学员>
    3
    请输入需要修改人的姓名:张三
    请输入需要修改后的姓名:李四
    ["郭易","汤碗珍",'李四'..]
    4)输入4后效果如下:<注意:如果list中没有这个学员则打印:T666班没有这个学员>
    请输入查询人的姓名:张三
    郭易在座位号(3<下标>)的位置。
    (5)输入exit后效果如下:
    exit
    欢迎使用T666的学生管理系统,下次再见。

     1 def questudent(slist):
     2     print(slist)
     3     print("
    ")
     4 
     5 def addstudent(slist):
     6     adds = str(input("请输入增加人的姓名:"))
     7     for s in slist:
     8         if s == adds:
     9             print('添加的学员名已存在')
    10             break
    11     else:
    12         slist.append(adds)
    13     print(slist)
    14     print("
    ")
    15 
    16 def delstudent(slist):
    17     dels = str(input("请输入删除人的姓名:"))
    18     for s in slist:
    19         if s == dels:
    20             slist.remove(dels)
    21             break
    22     else:
    23         print("删除人的姓名不存在")
    24     print(slist)
    25     print("
    ")
    26 
    27 
    28 def upstudent(slist):
    29     ups = str(input("请输入需要修改人的姓名:"))
    30     upsn = str(input("请输入需要修改后的姓名:"))
    31     slen = len(slist)
    32     for i in range(slen):
    33         if slist[i] == ups:
    34             slist[i] = upsn
    35             print(slist)
    36             break
    37     else:
    38         print("T666班没有这个学员")
    39     print("
    ")
    40 
    41 def questudentnum(slist):
    42     ques = str(input("请输入查询人的姓名:"))
    43     slen = len(slist)
    44     for i in range(slen):
    45         if slist[i] == ques:
    46             print("{0}在座位号{1}的位置".format(ques,i))
    47     print("
    ")
    48 
    49 
    50 def main():
    51     slist = ["郭易","汤碗珍"]
    52     while True:
    53         choice = input('请选择系统功能:
    0:显示所有学员信息
    1:添加一个学员信息
    2:删除一个学员信息
    3:修改一个学员信息
    4:查询一个学员信息
    exit:退出学生管理系统
    请输入序号:')
    54         if choice == '0':
    55             questudent(slist)
    56         elif choice == '1':
    57             addstudent(slist)
    58         elif choice == '2':
    59             delstudent(slist)
    60         elif choice == '3':
    61             upstudent(slist)
    62         elif choice == '4':
    63             questudentnum(slist)
    64         elif choice == 'exit':
    65             print("欢迎使用T666的学生管理系统,下次再见")
    66             exit()
    67         else:
    68             print("输入数据不符")
    69             continue
    70 
    71 if __name__ == '__main__':
    72     main()
  • 相关阅读:
    Apache Commons Digester 三(规则注解)
    Apache Commons Digester 二(规则模块绑定-RulesModule、异步解析-asyncParse、xml变量Substitutor、带参构造方法)
    Apache Commons Digester 一 (基础内容、核心API)
    Apache Commons Beanutils 三 (BeanUtils、ConvertUtils、CollectionUtils...)
    Apache Commons Beanutils 二 (动态Bean
    Apache Commons Beanutils 一 (使用PropertyUtils访问Bean属性)
    杭州富阳场口科目四考试公交路线(西溪北苑->场口)
    Java NIO中的通道Channel(二)分散/聚集 Scatter/Gather
    Java NIO中的通道Channel(一)通道基础
    .NET CORE 升级3.0遇到的问题the project must provide a value for configuration
  • 原文地址:https://www.cnblogs.com/heertong/p/12111287.html
Copyright © 2020-2023  润新知