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

    函数

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

    函数的关键字

    def      定义函数
    return 返回值
    pass 什么都不做,占位符,比如现在还没有想到怎么写函数的代码,可以先放一个pass,让代码可以运行
    exit(1) 直接退出程序
    例如下面这些都是函数的写法:
    def add1(x, y):
        print(x + y)
    
    def add2(x, y):
        return x + y
    
    def hello():
        pass

     函数的参数

    如果在声明函数的时候声明了一个参数,在调用函数的时候也要传入一个参数:

    def test1(str):
        print(str)
    test1("Hello,world")

    在声明函数的时候,我们可以声明多个参数,单数传入参数的时候要按顺序传入:

    def test2(name,age):
        print(name)
        print(age)
    
    # 要按声明的顺序传入参数
    test2("yangjian",18)
    
    # 指定了关键字参数后,可以不按顺序传入参数
    test2(age=18,name="yangjian")

    在声明函数的时候可以指定传入参数的默认值:

    def test3(name,age=18):
        print(name)
        print(age)
    test3(name="yangjian")

    不定长参数

    你可能需要一个函数能处理比当初声明时更多的参数。

    *args     tuple参数,对应赋值,传入的所有未命名的参数都会存放到*args,它是一个元组
    **kwargs dict参数,对应赋值,传入的未命名的参数都会存到**kwargs,它是一个字典
    fun(*args, **kwargs)
    fun(1, 2, 3, 4, 5, a=10, b=40)
    
    args = (1, 2, 3, 4, 5)
    kwargs = dict(a=10, b=40)

    匿名函数

    所谓匿名函数就是我们不再使用形如def的格式去定义函数,而是用lambda来创建匿名函数。

    lambda语法格式:lambda [arg1 [,arg2,.....argn]]:expression

    def add(x, y):
        return x + y
    
    add = lambda x,y:x+y

    高阶函数

    对于高阶函数,我们用得比较多的是sorted(),对所有可迭代对象进行排序操作。

    m = dict(a=1,c=10,b=20,d=15)
    for i in m.items():  # i 是一个元组
        print(i)
    print(sorted(m.items(),key=lambda x:x[0]))  # x[0]表示按key进行排序,x[1]表示按value进行排序
    # 排序后结果
    # [('a', 1), ('b', 20), ('c', 10), ('d', 15)]

    列表生成式

    [exp for val in collection if condition]
    print([x for x in range(1,5) if x%2 == 0])  # 打印1-5中的偶数
    # [2, 4]

    列表生成器

    方法一:

    (exp for val in collection if condition)

    方法二:

    def test():
        for i in range(1,5):
            yield i
    m = test()  # 返回的是一个生成器,需要使用for循环才能打印出结果
    print(m)
    for j in m:
        print(j)
    
    # 返回结果如下:
    <generator object test at 0x00000000021CDA40>
    1
    2
    3
    4

    练习

    将/etc/passwd文件里面的额内容安装uid进行排序

    import codecs
    
    def test(item):
        pass
    result = ""
    with codecs.open("passwd", "r") as f:
        result = sorted(f.readlines(), key=lambda item: int(item.split(":")[2]))   # 读取每一行的内容,按:分隔,取第二段即uid,用sorted()进行排序
    
    with codecs.open("sortPasswd", "w") as f:
        f.writelines(result)
  • 相关阅读:
    解决response在controller返回乱码的解决方式
    Injection of autowired dependencies failed;错误解决
    sql mybatis 使用concat乱码
    【算法基础】欧几里得gcd求最大公约数
    sql视图和表的区别
    在idea下创建maven
    Arrays.sort()自定义排序
    数组
    java 遍历数组
    抽象与接口
  • 原文地址:https://www.cnblogs.com/yangjian319/p/8847276.html
Copyright © 2011-2022 走看看