• Python基础-内置函数和匿名函数


    内置函数和匿名函数

    https://www.processon.com/view/link/5adc6062e4b04721d63171eb?pw=3218   密码:3218

    1. 内置函数

    1.1 作用域相关

    print(locals())   # 返回本地作用域中的所有名字  
    
    print(globals())  #返回全局作用域中的所有名字
    
    global 申明变量 ***
    nonlocal 申明变量 ***

    1.2 迭代器生成器相关

    next (迭代器)
    # 迭代器__next__()   <===> next(迭代器)
    方法 __next__  实际完成者
    内置函数  next()
    
    iter(可迭代的)
    # 迭代器 = 可迭代的.__iter__
    # 迭代器 = iter(可迭代的)
    
    range
    range(10)
    range(1,11)
    range(1,11,2)
    range 是可迭代的 但不是迭代器  没有 __next__ 方法
    iter(range)  是一个迭代器了。。。

    1.3 其他

    1.3.1 dir callable help

    dir 
    查看一个变量所拥有的所有方法  只能查变量,不能查关键字 def gloabl之类的
    print(dir([]))
    print(dir(1))
    
    callable
    #调用相关 返回true或者false
    判断一个名字是否能够被调用
    print(callable(print))  # True
    
    a = 1 
    print(callable(a))  # False
    
    def func():pass
    print(callable(func))   #True
    
    
    
    help 帮助相关
    help(str)  #查看str的所有方法及用法 比dir 更详细的方法
    dir(str) #只能查看拥有的方法名字 不能看到方法的用法

    1.3.2 模块相关

    import
    #  某个方法属于某个数据类型的变量,就用.调用
    #  如果某个方法不依赖于任何数据类型,就直接调用 --- 内置函数和自定义函数
    l = [1,2,3,4] # l像是句柄一样啊。。。
    l.append()
    
    
    import time
    # time = __time__('time')
    print(time.time())

    文件相关

    open()
    
    f = open('filename')
    print(f.writable())  # 判断文件是否可写
    print(f.readable())  # 判断文件是否可读

    1.3.3 内存相关

    id  #查看一个变量的内存地址
    
    hash 
    #  print(hash(对象)) 
    #   对象不能变的 都有值输出,代表可hash。 在一次执行中,一个值的hash值不会变。
    #    对象可变的,会报错 unhashable 
    
    对于相同可hash数据的hash值,在一次程序执行过程中总是不变的
    理解记忆字典的寻址方式

    1.3.4 输入输出

    input    # 用户输入
    
    ret = input('提示: ') 
    print(ret)
    
    print   # 输出方法
    print  #自带一个换行符 
    
    print('我们的祖国是花园
    ',end = '')  #默认参数 end 是空格
    
    print(1,2,3,4,5)
    print(1,2,3,4,5,sep = '|')    # sep  指定输出的分隔符
    
    print输出其实是写到一个文件 这个文件展示到屏幕上。我们可以改变这个默认文件。
    f = open('file','w')
    print('123',file = 'file')
    f.closed
    
    pirnt的其他参数
    def print(self, *args, sep=' ', end='
    ', file=None): # known special case of print
    '''
    file: 默认是输出到屏幕,如设置为文件句柄,则输出到文件
    sep: 打印多个值之间的分隔符,默认为空格
    end: 每一次打印的结尾,默认为换行符
    
    flush: 立即把内容输出到流文件,不做缓存
    '''

    1.3.5 字符串类型代码的执行

    evel
    exec
    
    exec('print(123)')   # 123
    eval('print(123)')    # 123 
    
    print(eval('1+2+3+4'))  # 10
    print(exec('1+2+3+4'))   # none
    
    # exec 和eval 都可以执行字符串类型的代码
    #  eval   有返回值  - 有结果的简单计算
    #  exec  没有返回值- 简单的流程控制
    evel 只能用在你明确知道你要执行的代码是什么
    
    code = ''' for i in range(10):
        print(i * '*')    
    '''
    eval(code)
    
    compile  # 不常用
    # 将字符串类型的代码进行编译,使其可以通过eval和exec执行。
    # 将代码转换为字节码

    1.4 基础数据类型相关

    1.4.1 和数字相关

    数据类型:

    int float complex  

    进制转换

    bin 
    十转二 (0b)
    oct
    十转八 (0o)
    hex
    十转十六(0x)

    数学运算

    abs   #求绝对值
    
    divmod  #接收两个参数  返回两个结果、取商取余
    print(divmod(7,2))      #  3,1
    print(divmod(2,7))      #  1,4
    
    round #小数精确
    round(3,1415926,2)  # 3.14
    
    pow  #幂运算
    print(row(2,3))    # 8  幂运算
    print(row(2,3,3))  #  幂运算之后取余
    
    sum  # 求和 接收一个可迭代的,数字
    
    min # 计算最小值
    print(min([1,2,3,4]))  # 1
    print(min(1,2,3,-4))  # -4
    print(min(1,2,3,-4,key = abs))  # 1  找绝对值的最小值
    
    max # 计算最大值,与最小值用法相同

    1.5 数据结构相关

    1.5.1 序列--列表和元组相关的

    list
    tuple

    1.5.2 序列--字符串相关的

    str
    format
    bytes
    
    bytearry
    ret = bytearray('alex',encoding='utf-8')
    print(id(ret))
    print(ret[0])
    ret[0] = 65
    print(ret)
    print(id(ret))
    
    memoryview
    ret = memoryview(bytes('你好',encoding='utf-8'))
    print(len(ret))
    print(bytes(ret[:3]).decode('utf-8'))
    print(bytes(ret[3:]).decode('utf-8'))
    
    ord
    chr
    ascii
    repr

    1.5.3 序列

    reversed
    slice

    数据集合——字典和集合:dict,set,frozenset

    数据集合:len,sorted,enumerate,all,any,zip,filter,map

    filter和map:http://www.cnblogs.com/Eva-J/articles/7266192.html

    sorted方法:http://www.cnblogs.com/Eva-J/articles/7265992.html

    2. 匿名函数

    匿名函数:为了解决那些功能很简单的需求而设计的一句话函数

    def calc(n):
        return n**n
    print(calc(10))
     
    #换成匿名函数
    calc = lambda n:n**n
    print(calc(10))

    图解:

    匿名函数格式说明

    函数名 = lambda 参数 :返回值
    
    #参数可以有多个,用逗号隔开
    #匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
    #返回值和正常的函数一样可以是任意数据类型

    我们可以看出,匿名函数并不是真的不能有名字。

    匿名函数的调用和正常的调用也没有什么分别。 就是 函数名(参数) 就可以了

  • 相关阅读:
    Poj 2391 二分答案+最大流+拆点
    POJ 1087 A Plug for UNIX 最大流
    POJ 1459 Power Network 最大流
    POJ 2112 Optimal Milking 二分答案+最大流
    POJ 1273 Drainage Ditches 最大流
    POJ 1149 PIGS 最大流
    POJ 2288 Islands and Bridges 哈密尔顿路 状态压缩DP
    The Cow Lexicon
    1523. K-inversions
    1350. Canteen
  • 原文地址:https://www.cnblogs.com/wangph/p/8955953.html
Copyright © 2020-2023  润新知