zoukankan      html  css  js  c++  java
  • 函数, lambda表达式

    函数

    • 函数:简单的理解,就是一次执行很多行代码
    • 函数的返回值
    • 函数的参数,和变量没区别

    例:

    def hello(): 
        print "hello world" 
    hello() 
    hello()  
    
    打印结果: 
    hello world
    hello world  
    

    返回值:

    def hello(): 
        print "hello world" 
    print hello  # 指函数,就是函数在内存里的一个地址. 
    print hello() # 指函数返回值 
    
    def hello(): 
        # print "hello world"
        return 2017 
    hello   
    print hello()  2017
    

    参数:

    def hello(name):
        print "Hello %s" % name
        return 2017
    hello("yangbin")
    print hello("asd")
    
    执行结果: 
    Hello yangbin
    Hello asd
    2017
    

    print是打印出来看.
    return是返回值.

    5阶乘, 54321
    f(n)

    def f(num):
        for i in range(1, int(num)+1):
            count = i * int(num)
            print count
    f(5) 
    
    执行结果: 
    5
    10
    15
    20
    25
    

    关键字参数的调用,和位置无关,只和名字相关:

    def hello(name,age):
        return name,age
    print hello("yangbin", 22)
    print hello(age = 22, name = "yangbin") 
    
    执行结果: 
    ('yangbin', 21)
    ('yangbin', 22)
    

    使代码更健壮:

    def hello(name = "yangbin",age = 22):
        return name,age
    print hello("yangbin", 22)
    print hello() 
    
    执行结果: 
    ('yangbin', 22)
    ('yangbin', 22)
    

    参数不固定的时候:

    关键字参数调用的时候,可读性好
    关键字参数在函数定义的时候,提供默认值

    开头的参数,收集所有剩下参数(位置参数) 元组

    开头的参数,收集所有剩下参数(关键字参数) 字典

    1.多个函数之间,尽量避免全局变量

    通用的函数:变化的东西,都由参数来定
    函数当成参数传递

    python自带的sorted函数

    sorted(待排序的list,key传递一个函数-决定根据元素的哪个属性进行排序)

    http://blog.csdn.net/zyl1042635242/article/details/43115675

    函数当成参数,传给了sorted

    lambda 就是没有名字的函数(特别简单的,只有return语句的函数)
    语法:

    lambda 参数:返回值
    

    示例:

    def hello(x):
        return x[1]
    print hello([2,3])
    hello = lambda x:x[1]
    print hello([2,3])
    
    执行结果: 
    3
    3
    

    函数作用域:

    函数内部的变量和全局变量不是在一个区域里的,函数内部变量,现在函数内部找,找不到才会去全局找
    函数内部作用域赋值,对外部无影响
    函数内部想修改全局变量,要用global声明一下

    get()函数:

    get() 函数返回指定键的值,如果值不在字典中返回默认值。
    语法:

    dict.get(key, default=None) 
    
    key -- 字典中要查找的键。
    default -- 如果指定键的值不存在时,返回该默认值。
    

    get()和setdefault()的区别:

    一. get 函数 -- 获得给定键相关联的值

    dict = {'name':'lorine','age':'25'}
    dict.get('name')  # 返回name对应的键值lorine,如果此键不存在字典中,则会返回None;
    dict.get('work','student')  # 如果对应的键'work'不在字典中,则会返回默认的'student'
    

    二. setdefault 函数 -- 获得给定键相关联的值,并更新字典,还能在字典中不含有给定键的情况下设置相应的键值

    dict = {'name':'lorine','age':'25'}
    dict.setdefault('name')  # 或者dict.setdefault('name','lili')都是返回name对应的值lorine;
    dict.setdefault('work')  # 此键值不存在,则更新字典添加此键和默认值dict ={'name':'lorine','age':'25','work':None};
    dict.setdefault('work','student')  # 则更新字典dict ={'name':'lorine','age':'25','work':'student'};
    

    用get函数优化代码:

    D = {"192.168": 2}
    ip = "192.168"
    # if ip in D:
    #     D[ip] += 1
    # else:
    #     d[ip] = 1
    # print D
    
    res = {}
    res[ip] = D.get(ip, 0) + 1
    print res
    

    遍历list的三种方法:

    num = [1, 2, 3, 4, 5, 6]
    for i in num:
        print i
    
    for i in range(len(num)):
        print num[i]
    
    for i,j in enumerate(num):
        # print i, j
        print j
    

    遍历dict的两种方法:

    info = {"name": "yangbin", "age": 22, "sex": "male"}
    for i in info.keys():
        print i, info[i]
    
    for k,v in info.items():
        print k,v 
    

    三元运算: 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即:

    if 12 > 20:
        print "True"
    else:
        print "False"
    
    result = "True" if 12 > 20 else "False"
    print result
    
    运行结果: 
    False
    False
    

    lambda表达式: 对于简单的函数,也存在一种简便的表示方式,即:lambda表达式.

    # 普通函数表示:
    def f(num):
        return num + 1
    # print f(20)
    result = f(20)
    print result
    
    # lambda表达式表示: 
    定义函数
    my_lambda = lambda args: args + 1 
    执行函数
    result = my_lambda(20)
    print result
  • 相关阅读:
    [GAMES101]计算机图形学 Assignment 作业1 透视投影 解析手记
    [GAMES101]计算机图形学 Assignment 0
    [算法竞赛入门经典] 象棋 ACM/ICPC Fuzhou 2011, UVa1589 较详细注释
    最长上升子序列
    Qt快速入门第三版PDF
    [C++]UVaLive7324 ASCII Addtion
    [算法竞赛入门经典]Message Decoding,ACM/ICPC World Finals 1991,UVa213
    由数据查询慢来浅谈下oracle中的like和instr函数的模糊查询效率问题
    swift学习资料 + 教程
    weblogic DataSource 配置注意事项
  • 原文地址:https://www.cnblogs.com/amesy/p/6782046.html
Copyright © 2011-2022 走看看