zoukankan      html  css  js  c++  java
  • python3--内置函数



    python3--内置函数

    内置函数:

    截止到python 3.6.2 版本,现在python一共提供了68个内置函数;即python提供给你直接可以拿来使用的所有函数。

    红色字体为重点掌握内置函数

      内置函数  (点击函数查看详细)
    abs() dict() help() min() setattr()
    all() dir() hex() next() slice()
    any() divmod() id() object() sorted()
    ascii() enumerate() input() oct() staticmethod()
    bin() eval() int() open() str()
    bool() exec() isinstance() ord() sum()
    bytearray() filter() issubclass() pow() super()
    bytes() float() iter() print() tuple()
    callable() format() len() property() type()
    chr() frozenset() list() range() vars()
    classmethod() getattr() locals() repr() zip()
    compile() globals() map() reversed() __import__()
    complex() hasattr() max() round()  
    delattr() hash() memoryview() set()  

    上面便是内置函数列表,按首字母排序,难免看起来混乱无序,不便于记忆;

    下面把这些函数分成了6大类。

    由于学习进度原因,此处只写标红的四大块(56个方法)~

    作用域相关:

    基于字典的形式获取全局变量和局部变量

    globals()——获取全局变量的字典(以字典类型返回当前位置的全部全局变量。)

    a='runoob'
    print(globals())     # globals 函数返回一个全局变量的字典,包括所有导入的变量。
    
    {'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'a': 'runoob', '__package__': None}
    globals()

    locals()——获取执行本方法所在命名空间内的局部变量的字典(以字典类型返回当前位置的全部局部变量;对于函数, 方法, lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True。)

    >>>def runoob(arg):    # 两个局部变量:arg、z
    ...     z = 1
    ...     print (locals())
    ... 
    >>> runoob(4)
    
    {'z': 1, 'arg': 4}      # 返回一个名字/值对的字典
    locals()

    其他:

    字符串代码类型的执行:

    eval( ) 函数用来执行一个字符串表达式,并返回表达式的值。

    >>>x = 7
    >>> eval( '3 * x' )
    21
    >>> eval('pow(2,2)')
    4
    >>> eval('2 + 2')
    4
    >>> eval("n + 4")
    85
    eval()

    exec() 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码。(exec 返回值永远为 None)

    >>>exec('print("Hello World")')
    Hello World
    # 单行语句字符串
    >>> exec("print ('runoob.com')")
    runoob.com
     
    #  多行语句字符串
    >>> exec ("""for i in range(5):
    ...     print ("iter time: %d" % i)
    ... """)
    iter time: 0
    iter time: 1
    iter time: 2
    iter time: 3
    iter time: 4
    exec()
    x = 10
    expr = """
    z = 30
    sum = x + y + z
    print(sum)
    """
    def func():
        y = 20
        exec(expr)
        exec(expr, {'x': 1, 'y': 2})
        exec(expr, {'x': 1, 'y': 2}, {'y': 3, 'z': 4})
    
    func()
    
    
    
    输出结果:
    60
    33
    34
    exec()
    code = '''
    import os 
    print(os.path.abspath('.'))
    '''
    code = '''
    print(123)
    a = 20
    print(a)
    '''
    a = 10
    exec(code,{'print':print},)
    print(a)
    指定global参数

    compile  将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。

    参数说明:   

    1. 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。  

    2. 参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。  

    3. 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'。

    >>> #流程语句使用exec
    >>> code1 = 'for i in range(0,10): print (i)'
    >>> compile1 = compile(code1,'','exec')
    >>> exec (compile1)
    1
    3
    5
    7
    9
    
    
    >>> #简单求值表达式用eval
    >>> code2 = '1 + 2 + 3 + 4'
    >>> compile2 = compile(code2,'','eval')
    >>> eval(compile2)
    
    
    >>> #交互语句用single
    >>> code3 = 'name = input("please input your name:")'
    >>> compile3 = compile(code3,'','single')
    >>> name #执行前name变量不存在
    Traceback (most recent call last):
      File "<pyshell#29>", line 1, in <module>
        name
    NameError: name 'name' is not defined
    >>> exec(compile3) #执行时显示交互命令,提示输入
    please input your name:'pythoner'
    >>> name #执行后name变量有值
    "'pythoner'"

    输入输出相关:

    input()输入

    s = input("请输入内容 : ")  #输入的内容赋值给s变量
    print(s)  #输入什么打印什么。数据类型是str

    print()输出

    def print(self, *args, sep=' ', end='
    ', file=None): # known special case of print
        """
        print(value, ..., sep=' ', end='
    ', file=sys.stdout, flush=False)
        file:  默认是输出到屏幕,如果设置为文件句柄,输出到文件
        sep:   打印多个值之间的分隔符,默认为空格
        end:   每一次打印的结尾,默认为换行符
        flush: 立即把内容输出到流文件,不作缓存
        """
    print()源码剖析
    import time
    for i in range(0,101,2):  
         time.sleep(0.1)
         char_num = i//2      #打印多少个'*'
         per_str = '
    %s%% : %s
    ' % (i, '*' * char_num) if i == 100 else '
    %s%% : %s'%(i,'*'*char_num)
         print(per_str,end='', flush=True)
    
    # 
     可以把光标移动到行首但不换行
    打印进度条

    数据类型相关:

    type(x) 返回变量x的数据类型

    内存相关:

    id(x)  x是参数,返回一个变量的内存地址

    hash(x)    x是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。

    t = (1,2,3)
    l = [1,2,3]
    print(hash(t))  #可hash
    print(hash(l))  #会报错
    
    '''
    结果:
    TypeError: unhashable type: 'list'
    '''
    hash 实例

    hash函数会根据一个内部的算法对当前可hash变量进行处理,返回一个int数字。

    每一次执行程序,内容相同的变量hash值在这一次执行过程中不会发生改变。

    文件操作相关:

    open()  打开一个文件,返回一个文件操作符(文件句柄)

    可以用encoding指定编码.

    r    以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    rb    以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
    r+    打开一个文件用于读写。文件指针将会放在文件的开头。
    rb+    以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
    w    打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    wb    以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    w+    打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    wb+    以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    a    打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    ab    以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    a+    打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    ab+    以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
    操作文件模式

    模块操作相关: 

    __import__    导入一个模块

    import time
    os = __import__('os')
    print(os.path.abspath('.'))

    帮助方法:

    在控制台执行help()进入帮助模式。可以随意输入变量或者变量的类型。输入q退出

    或者直接执行help(o),o是参数,查看和变量o有关的操作。

    调用相关:

    callable(n),n是参数,看这个变量是不是可调用。

    如果n是一个函数名,就会返回True

    def func():pass
    print(callable(func))  #参数是函数名,可调用,返回True
    print(callable(123))   #参数是数字,不可调用,返回False
    callable 实例

    查看参数所属类型的所有内置方法:

    dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量

    print(dir(list))  #查看列表的内置方法
    print(dir(int))  #查看整数的内置方法

    和数字相关:

    数字:

    数据类型相关:bool,int,float,complex

    进制转换相关:bin,oct,hex

    数学运算相关:abs,divmod,min,max,sum,round,pow

    和数据结构相关:

    序列:

    列表和元组相关的:list和tuple

    字符串相关的:str,format,bytes,bytearry,memoryview,ord,chr,ascii,repr

    ret = bytearray('alex',encoding='utf-8')
    print(id(ret))
    print(ret[0])
    ret[0] = 65
    print(ret)
    print(id(ret))
    bytearray
    ret = memoryview(bytes('你好',encoding='utf-8'))
    print(len(ret))
    print(bytes(ret[:3]).decode('utf-8'))
    print(bytes(ret[3:]).decode('utf-8'))
    
    
    
    输出结果:
    6
    你
    好
    
    Process finished with exit code 0
    memoryview

    序列:

    reversed

    l = (1,2,23,213,5612,342,43)
    print(l)
    print(list(reversed(l)))


    执行结果:

     (1, 2, 23, 213, 5612, 342, 43)
     [43, 342, 5612, 213, 23, 2, 1]

    slice

    l = (1,2,23,213,5612,342,43)
    sli = slice(1,5,2)
    print(l[sli])
    
    
    执行结果:
    (2, 213)
    
    Process finished with exit code 0

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

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

    filter和map:http://http://www.cnblogs.com/bigtreei/p/7819450.html

    sorted方法:http://http://www.cnblogs.com/bigtreei/p/7819505.html

    务必重点掌握:

    其他:input,print,type,hash,open,import,dir

    str类型代码执行:eval,exec

    数字:bool,int,float,abs,divmod,min,max,sum,round,pow

    序列——列表和元组相关的:listtuple

    序列——字符串相关的:str,bytes,repr

    序列:reversed,slice

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

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

    官方参考文档:

      https://docs.python.org/3/library/functions.html#object

  • 相关阅读:
    一些简单的问题
    WebRTC的 windows 7 环境搭建
    HTML常用标签
    参考C#编程规范
    C#窗体调用(转载)
    java中的小知识(不断更行中。。。。。)
    CF1483E Vabank 题解
    CF755G PolandBall and Many Other Balls 题解
    CF1483D Useful Edges 题解
    CF1368F Lamps on a Circle 题解
  • 原文地址:https://www.cnblogs.com/bigtreei/p/7819309.html
Copyright © 2011-2022 走看看