zoukankan      html  css  js  c++  java
  • Python之自定义函数

    函数

    1、定义函数

    在Python中定义一个函数要使用def语句,一次写出函数名、括号、括号中的的参数和冒号,然后在缩进块中编写函数体,函数的返回值用return返回。如下所示:

    def 函数名(参数列表):
        函数体


    简单的定义一个函数
    1 def hello() :
    2    print("Hello World!")
    3 hello()
    
    Hello World!


    定义一个带参数的函数:

    需求:替换列表中的某个值替换成另一个值
    l=[3,3,4,5,6,6,5,3,6,2,9,9,2,8,2,3]
    i=0
    while i<len(l):
        if l[i]==3:#把l中的3换成7
            l[i]=7
        i+=1
    
    

    l

    [7, 7, 4, 5, 6, 6, 5, 7, 6, 2, 9, 9, 2, 8, 2, 7]

    由上可知循环不能反复利用,而且参数固定,所以我们可以定义一个函数。
    1 def list_element_replace(somelist,x,y):
    2     i=0
    3     while i<len(l):
    4         if l[i]==x:#丢弃值
    5             l[i]=y#代替值
    6         i+=1
    7     return somelist
    
    
    1 l=[1,2,3,4,1,2,3,1,4,5,2,3]
    2 list_element_replace(l,3,30)
    [1, 2, 30, 4, 1, 2, 30, 1, 4, 5, 2, 30]

    用for循环来编写
    1 def replace_element(a,b,c):
    2     for i in range(len(a)):
    3         if a[i]==b:
    4             a[i]=c
    5     return a
    1 replace_element(l,2,20)
    [1, 20, 30, 4, 1, 20, 30, 1, 4, 5, 20, 30]




    2、函数的参数
    2-1、位置参数
    按照从左到右的顺序依次定义的参数叫做位置参数;
    1 def student(age,high,sex):
    2     if age<18:
    3         print(age)
    4         print(high)
    5         print(sex)
    6     else:
    7         print("超出年龄"
    
    
    1 student(19,170,"")
    超出年龄
    
    
    1 student(16,170,"")
    
    
    16
    170
    女

    由上面函数可知道,位置参数的顺序是不能改变的,否则传入参数是会错误识别。其实在传参数时我们也能显示的表示这些参数,即下面的关键字参数。



    2-2、关键字参数与默认参数

    
    

    • 关键字参数:按照关键字进行传参的参数,按照名称-值对的形式进行传参的参数;关键字参数可以不按参数的顺序进行传值;

    
    
    1 def student(age,high,sex):
    2     if age<18:
    3         print(age)
    4         print(high)
    5         print(sex)
    6     else:
    7         print("超出年龄")
    
    
    student(sex="",age=17,high=178)#当我们显示的把这些参数传进来时无关顺序
    17
    178
    男

     默认参数:在函数定义阶段就定义好默认值的参数;传参时,如果不传入具体的值,则使用定义时的值;
    1 def student(age,high,sex=""):
    2     if age<18:
    3         print(age)
    4         print(high)
    5         print(sex)
    6     else:
    7         print("超出年龄")
    
    
    student(16,178)#在传参时若某参数与默认参数一致则可省略
    16
    178
    女
    student(16,178,"")#若不一致则传入实际的值即可
    16
    178
    男


    2-3、不定长参数
    有时我们定义函数是并不知道需要多少参数,这些参数叫做不定长参数。通常有两种方法*args,**kwargs。
    加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。

    1 def scores(a,*x):
    2     print(a)
    3     print(x)
    
    
    1 cores("姓名",80,79,88)
    姓名
    (80 79 88)

    编写求一串数的总和的函数
    1 def sum_element(*x):
    2     s=0
    3     for i in x:
    4         s=s+i
    5     print(s)
    
    
    1 sum_element(1,2,3,4)

    10

    当传入的参数是列表或元组等一些集合时,我们可在参数前加*将其拆开。(定义函数特有的用法)

    1 t=(1,3,5,7)
    2 sum_element(*t)

    16

    加了两个星号 ** 的参数会以字典的形式导入。
    1 def scores(a,**x):
    2     print(a)
    3     print(x)
    
    
    1 scores("姓名",b=98,c=109,d=110)
    姓名
    {'b': 98, 'c': 109, 'd': 110}

    直接传入字典
    1 dict1={'b': 98, 'c': 109, 'd': 110}
    2 def scores(a,**x):
    3     print(a)
    4     print(x)
    scores("姓名",**dict1)#用**对字典进行拆包
    姓名
    {'b': 98, 'c': 109, 'd': 110}

    注:编写函数是参数是遵循一定的顺序的:位置参数>关键字参数/默认参数>不定长参数(*args/**kwargs)

     

    3、匿名函数lambda:

    使用lambda关键字来创造匿名函数,lambda是一个表达式,也可以说是一个匿名函数。简单来说可以认为是没有名字的函数。

    语法:
    lambda 参数 : 返回值

     

    1 def sq(x):
    2     #....
    3     #定义一个求x平方的函数
    4     #....
    5     return x*x
    1 sq1=lambda x:x*x#简单一条语句组成一个函数
    1 sq(3)

     9

    1 sq1(3)

    9

    lambda函数语法简单明了,我们常常把匿名函数与循环语句或map()函数等配套使用起来非常方便。

     
  • 相关阅读:
    SpringData JPA接口总结
    使用allatori混淆代码
    Oracle查看表空间大小
    Mac常用命令
    Web.config或App.config下section
    ansi、unicode、UCS、UTF等概念(转)
    强名称程序集与GAC
    指针和引用的区别(转)
    .NET程序员应该知道些什么(转)
    dispose,null和close的区别
  • 原文地址:https://www.cnblogs.com/ye20190812/p/13359179.html
Copyright © 2011-2022 走看看