• python笔记


    vscode 配置 python3开发环境

    https://blog.csdn.net/weixin_40528417/article/details/81141567

    Python面向对象

    来源 https://www.runoob.com/python/python-object.html

    print

    语法
    以下是 print() 方法的语法:

    print(*objects, sep=' ', end=' ', file=sys.stdout)
    参数
    objects -- 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
    sep -- 用来间隔多个对象,默认值是一个空格。
    end -- 用来设定以什么结尾。默认值是换行符 ,我们可以换成其他字符串。
    file -- 要写入的文件对象。

    print("www","runoob","com",sep=".") # 设置间隔符

    输出: www.runoob.com

    • print格式化
    print('{0},{1}'.format('zhangk', 32))
     
    print('{},{},{}'.format('zhangk','boy',32))
     
    print('{name},{sex},{age}'.format(age=32,sex='male',name='zhangk'))
     
    # 格式限定符
    # 它有着丰富的的“格式限定符”(语法是{}中带:号),比如:
     
    # 填充与对齐
    # 填充常跟对齐一起使用
    # ^、<、>分别是居中、左对齐、右对齐,后面带宽度
    # :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
     
    print('{:>8}'.format('zhang'))
    print('{:0>8}'.format('zhang'))
    print('{:a<8}'.format('zhang'))
    print('{:p^10}'.format('zhang'))
     
    # 精度与类型f
    # 精度常跟类型f一起使用
    print('{:.2f}'.format(31.31412))
     
    # 其他类型
    # 主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制
    print('{:b}'.format(15))
     
    print('{:d}'.format(15))
     
    print('{:o}'.format(15))
     
    print('{:x}'.format(15))
     
    # 用逗号还能用来做金额的千位分隔符
    print('{:,}'.format(123456789))
    

    基础

    • 多行语句
      可以使用斜杠( )将一行的语句分为多行显示,如下所示:
      total = item_one + 
            item_two + 
            item_three
      
      语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:
      days = ['Monday', 'Tuesday', 'Wednesday',
            'Thursday', 'Friday']
      
    • Python注释
      python中单行注释采用 # 开头。python 中多行注释使用三个单引号(''')或三个双引号(""")。
      '''
       这是多行注释,使用单引号。
       这是多行注释,使用单引号。
       这是多行注释,使用单引号。
       '''
      
       """
       这是多行注释,使用双引号。
       这是多行注释,使用双引号。
       这是多行注释,使用双引号。
       """
      
    • 同一行显示多条语句
      Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:
      import sys; x = 'runoob'; sys.stdout.write(x + '
      ')
      

    Python的数组分三种类型

    Python的数组分三种类型:

    • (1) list 普通的链表,初始化后可以通过特定方法动态增加元素。
      定义方式:arr = [元素]
    • (2) Tuple 固定的数组,一旦定义后,其元素个数是不能再改变的。
      定义方式:arr = (元素)
    • (3) Dictionary 词典类型, 即是Hash数组。
      定义方式:arr = {元素k:v}

    变量

    • 多变量赋值
      Python允许你同时为多个变量赋值。例如:

      a = b = c = 1
      

      也可以为多个对象指定多个变量。例如:

      a, b, c = 1, 2, "john"
      
    • Python 元组
      元组是另一个数据类型,类似于 List(列表)。
      元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

        tuple = ("runoob", 786, 2.23, "john", 70.2)
        tinytuple = (123, "john")
      
        print(tuple)  # 输出完整元组
        print(tuple[0])  # 输出元组的第一个元素
        print(tuple[1:3])  # 输出第二个至第四个(不包含)的元素
        print(tuple[2:])  # 输出从第三个开始至列表末尾的所有元素
        print(tinytuple * 2)  # 输出元组两次
        print(tuple + tinytuple)  # 打印组合的元组
      

      以上实例输出结果:

      ('runoob', 786, 2.23, 'john', 70.2)
      runoob
      (786, 2.23)
      (2.23, 'john', 70.2)
      (123, 'john', 123, 'john')
      ('runoob', 786, 2.23, 'john', 70.2, 123, 'john')

    • Python 字典
      字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

        dict = {}
        dict["one"] = "This is one"
        dict[2] = "This is two"
      
        tinydict = {"name": "john", "code": 6734, "dept": "sales"}
      
        print(dict["one"])  # 输出键为'one' 的值
        print(dict[2])  # 输出键为 2 的值
        print(tinydict)  # 输出完整的字典
        print(tinydict.keys())  # 输出所有键
        print(tinydict.values())  # 输出所有值
      

      输出结果为:

      This is one
      This is two
      {'dept': 'sales', 'code': 6734, 'name': 'john'}
      ['dept', 'code', 'name']
      ['sales', 6734, 'john']

    Python运算符

    % 取模 - 返回除法的余数
    ** 幂 - 返回x的y次幂
    // 取整除 - 返回商的整数部分(向下取整) 9//2输出为4 -9//2输出为-5

    • Python位运算符

      运算符 描述
      & 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
      | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
      ^ 按位异或运算符:当两对应的二进位相异时,结果为1
      ~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1
      << 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。
      >> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数
        a = 60  # 60 = 0011 1100
        b = 13  # 13 = 0000 1101
        c = 0
      
        c = a & b
        # 12 = 0000 1100
        print("1 - c 的值为:", c)
      
        c = a | b
        # 61 = 0011 1101
        print("2 - c 的值为:", c)
      
        c = a ^ b
        # 49 = 0011 0001
        print("3 - c 的值为:", c)
      
        c = ~a
        # -61 = 1100 0011
        print("4 - c 的值为:", c)
      
        c = a << 2
        # 240 = 1111 0000
        print("5 - c 的值为:", c)
      
        c = a >> 2
        # 15 = 0000 1111
        print("6 - c 的值为:", c)
      
    • Python逻辑运算符

      运算符 逻辑表达式 描述
      and x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。
      or x or y 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。
      not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。
    • Python成员运算符

      运算符 描述 实例
      in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
      not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
    • Python身份运算符

      运算符 描述 实例
      is is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
      is not is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

    Python 循环语句

    循环控制语句

    控制语句 描述
    break 语句 在语句块执行过程中终止循环,并且跳出整个循环
    continue 语句 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。
    pass 语句 pass是空语句,是为了保持程序结构的完整性。
    # 输出 Python 的每个字母
      for letter in "Python":
          if letter == "h":
              pass  # pass 不做任何事情,一般用做占位语句。
              print("这是 pass 块")
          print("当前字母 :", letter)
    
      print("Good bye!")
    

    Python 字符串

    • Python 字符串格式化

      控制语句 描述
      %c 格式化字符及其ASCII码
      %s 格式化字符串
      %d 格式化整数
      %u 格式化无符号整型
      %o 格式化无符号八进制数
      %x 格式化无符号十六进制数
      %X 格式化无符号十六进制数(大写)
      %f 格式化浮点数字,可指定小数点后的精度
      %e 用科学计数法格式化浮点数
      %E 作用同%e,用科学计数法格式化浮点数
      %g %f和%e的简写
      %G %f 和 %E 的简写
      %p 用十六进制数格式化变量的地址

    Python函数

    lambda 匿名函数

    语法
    lambda函数的语法只包含一个语句,如下:

    lambda [arg1 [,arg2,.....argn]]:expression

    如下实例:

    # 可写函数说明
    sum = lambda arg1, arg2: arg1 + arg2
    
    # 调用sum函数
    print("相加后的值为 : ", sum(10, 20))
    print("相加后的值为 : ", sum(20, 20))
    

    return 语句

    return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。

    Python 模块

    Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
    把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
    模块能定义函数,类和变量,模块里也能包含可执行的代码。

    import 语句

    祥见 Python import与from import使用

    from…import 语句

    祥见 Python import与from import使用

    from…import* 语句

    祥见 Python import与from import使用

    Python中的包

    包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。
    简单来说,包就是文件夹,但该文件夹下必须存在 init.py 文件, 该文件的内容可以为空。init.py 用于标识当前文件夹是一个包。
    考虑一个在 package_runoob 目录下的 runoob1.py、runoob2.py、init.py 文件,test.py 为测试调用包的代码,目录结构如下:

    |-test.py
    |-package_runoob
    |-- init.py
    |-- runoob1.py
    |-- runoob2.py

    源代码如下:
    package_runoob/runoob1.py

    def runoob1():
       print("I'm in runoob1")
    

    package_runoob/runoob2.py

    def runoob2():
       print("I'm in runoob2")
    

    package_runoob/_init_.py

    if __name__ == '__main__':
        print '作为主程序运行'
    else:
        print 'package_runoob 初始化'
    

    然后我们在 package_runoob 同级目录下创建 test.py 来调用 package_runoob 包

    # 导入 Phone 包
    from package_runoob.runoob1 import runoob1
    from package_runoob.runoob2 import runoob2
     
    runoob1()
    runoob2()
    

    以上实例输出结果:

    package_runoob 初始化
    I'm in runoob1
    I'm in runoob2

    Python异常处理

    比如抛出常规错误的基类 Exception

    try:
        fo = open("foo.txt", "w")
        print("文件名: ", fo.name)
        print("是否已关闭 : ", fo.closed)
        print("访问模式 : ", fo.mode)
        print("末尾是否强制加空格 : ", fo.softspace)
        fo.write("www.runoob.com!
    Very good site!
    ")
    except Exception as e:
        print(e)
    finally:
        # 关闭打开的文件
        fo.close()
    

    Python设计模式

    来源 https://www.cnblogs.com/luhuajun/p/7442815.html

    类的私有属性

    __privateAttrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__privateAttrs。

    单下划线、双下划线、头尾双下划线说明:

    • _foo_: 定义的是特殊方法,一般是系统定义名字 ,类似 init() 之类的。
    • _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
    • __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。

    Python import与from import使用

    锚点 Python import与from import使用

    来源 https://www.cnblogs.com/Jimc/p/9597601.html

    import语句

    语法:
    import module1[, module2[,... moduleN]]
    

    实例:
    1、使用random模块ranint() 函数:

    # printRandom.py
    import random
    for i in range(5):
        print(random.randint(1, 10))
    
    # result:
    5
    3
    6
    4
    9
    

    2、导入多个模块:

    import math, sys, random, os
    

    from import语句

    这是导入模块的另一种形式,使用这种形式的 import 语句, 调用 模块中的函数时不需要 moduleName. 前缀 。但是,使用完整的名称会让代码更可读,所以最好是使用普通形式的 import 语句 。

    语法:

    from moduleName import name1[, name2[, ... nameN]]|*
    

    实例:

    导入random模块下的所有函数:

    from random import *
    for i in range(5):
        print(randint(1, 10)) # 这里就不需要random.前缀了
    

    导入random模块下的randint, random函数:

    from random import randint, random
    

    不建议用 "from module import *"
    在实践中, "from module import *" 不是良好的编程风格,如果使用from导入变量,且那些变量碰巧和作用域中现有变量同名,那么变量名就会被悄悄覆盖掉。使用import语句的时候就不会发生这种问题,因为我们是通过模块名才获取的变量名,像module.attr不会和现有作用域的attr冲突。
    何时使用from import:
    我们只在两种场合下建议使用这样的方法, 一个场合是:目标模块中的属性非常多, 反复键入模块名很不方便 , 例如 Tkinter (Python/Tk) 和 NumPy (Numeric Python) 模块 , 可能还有 socket 模块。
    另一个场合是在交互解释器下, 因为这样可以减少输入次数。

    python实例方法,静态方法,类方法

    来源 https://www.jianshu.com/p/212b6fdb2c50
    python 类语法中有三种方法,实例方法,静态方法,类方法。

    # coding:utf-8
    class Foo(object):
        """类三种方法语法形式"""
    
        def instance_method(self): #第一个参数必须要默认传实例对象,一般习惯用self。
            print("是类{}的实例方法,只能被实例对象调用".format(Foo))
    
        @staticmethod
        def static_method(): #静态方法,参数没有要求。
            print("是静态方法")
    
        @classmethod
        def class_method(cls): #类方法,第一个参数必须要默认传类,一般习惯用cls。
            print("是类方法")
    
    foo = Foo()
    foo.instance_method()
    foo.static_method()
    foo.class_method()
    print('----------------')
    Foo.static_method()
    Foo.class_method()
    

    实例方法只能被实例对象调用,静态方法(由@staticmethod装饰的方法)、类方法(由@classmethod装饰的方法),可以被类或类的实例对象调用。
    实例方法,第一个参数必须要默认传实例对象,一般习惯用self。
    静态方法,参数没有要求。
    类方法,第一个参数必须要默认传类,一般习惯用cls。

    静态方法、类方法使用区别或者说使用场景

    1、类方法用在模拟java定义多个构造函数的情况。

    由于python类中只能有一个初始化方法,不能按照不同的情况初始化类。

    # coding:utf-8
    class Book(object):
    
        def __init__(self, title):
            self.title = title
    
        @classmethod
        def create(cls, title):
            book = cls(title=title)
            return book
    
    book1 = Book("python")
    book2 = Book.create("python and django")
    print(book1.title)
    print(book2.title)
    

    2、类中静态方法方法调用静态方法的情况。

    下面的代码,静态方法调用另一个静态方法,如果改用类方法调用静态方法,可以让cls代替类,
    让代码看起来精简一些。也防止类名修改了,不用在类定义中修改原来的类名。

    # coding:utf-8
    class Foo(object):
        X = 1
        Y = 2
    
        @staticmethod
        def averag(*mixes):
            return sum(mixes) / len(mixes)
    
        @staticmethod
        def static_method():
            return Foo.averag(Foo.X, Foo.Y)
    
        @classmethod
        def class_method(cls):
            return cls.averag(cls.X, cls.Y)
    
    foo = Foo()
    print(foo.static_method())
    print(foo.class_method())
    

    3、继承类中的区别

    从下面代码可以看出,如果子类继承父类的方法,子类覆盖了父类的静态方法,
    子类的实例继承了父类的static_method静态方法,调用该方法,还是调用的父类的方法和类属性。
    子类的实例继承了父类的class_method类方法,调用该方法,调用的是子类的方法和子类的类属性。

    # coding:utf-8
    class Foo(object):
       X = 1
       Y = 2
    
       @staticmethod
       def averag(*mixes):
           return sum(mixes) / len(mixes)
    
       @staticmethod
       def static_method():
           return Foo.averag(Foo.X, Foo.Y)
    
       @classmethod
       def class_method(cls):
           return cls.averag(cls.X, cls.Y)
    
    class Son(Foo):
       X = 3
       Y = 5
    
       @staticmethod
       def averag(*mixes):
           return sum(mixes) / 3
    
    p = Son()
    print(p.static_method())
    print(p.class_method())
    

    python中self和cls的区别

    self代表类的实例,而非类

    class Test:
        def prt(self):
            print(self)
            print(self.__class__)
     
    t = Test()
    t.prt()
    

    输出:

    <__main__.Test instance at 0x10d066878>
    _main_.Test

    从执行结果可以很明显的看出,self 代表的是类的实例,代表 当前对象的地址,而 self._class_ 则指向类。

    class A(object):
        def foo1(self):
            print("Hello", self)
    
        @staticmethod
        def foo2():
            print("hello")
    
        @classmethod
        def foo3(cls):
            print("hello", cls)
    
    
    a = A()
    a.foo1()  # self 代表的是类的实例,代表 当前对象的地址
    # 输出 Hello <__main__.A object at 0x00000208384802B0>
    
    A.foo1(a)  # self 代表的是类的实例,代表 当前对象的地址
    # 输出 Hello <__main__.A object at 0x00000208384802B0>
    
    A.foo2()  # 这里,由于静态方法没有参数,故可以不传东西
    # 输出 hello
    
    A.foo3()  # cls表示这个类本身
    # 输出 hello <class '__main__.A'>
    
    • 1、self表示一个具体的实例本身。如果用了staticmethod,那么就可以无视这个self,将这个方法当成一个普通的函数使用。
    • 2、cls表示这个类本身。
    • 3、类先调用__new__方法,返回该类的实例对象,这个实例对象就是__init__方法的第一个参数self,即self是__new__的返回值。

    Python中的__new__ __init__区别

    来源:https://www.cnblogs.com/suntp/p/6445286.html
    _init_ 方法

    _init_ 方法通常用在初始化一个类实例的时候。例如:

    # -*- coding: utf-8 -*-
    class A(object):
        def __init__(self,*args, **kwargs):
            print "init A"
        def __new__(cls,*args, **kwargs):
            print "new A %s"%cls
            #return super(A, cls).__new__(cls, *args, **kwargs)
            return object.__new__(cls, *args, **kwargs)
    

    1、继承自object的新式类才有__new__
    2、_new_至少要有一个参数cls,代表当前类,此参数在实例化时由Python解释器自动识别
    3、_new_必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类(通过super(当前类名, cls))__new__出来的实例,或者直接是object的__new__出来的实例
    4、__init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值
    5、如果__new__创建的是当前类的实例,会自动调用__init__函数,通过return语句里面调用的__new__函数的第一个参数是cls来保证是当前类实例,如果是其他类的类名,;那么实际创建返回的就是其他类的实例,其实就不会调用当前类的__init__函数,也不会调用其他类的__init__函数。

    python中带*号的参数,一个星号,两个星号

    参数前加一个星号,将传递进来的参数放在同一个元组中,该参数的返回值是一个元组
    参数前两个星号,将传递进来的参数放到同一个字典中,该参数返回值为一个字典

    def function_with_one_star(*d):
        print(d, type(d))
    
    def function_with_two_stars(**d):
        print(d, type(d))
    
    # 上面定义了两个函数,分别用了带一个星号和两个星号的参数,它们是什么意思,运行下面的代码:
    function_with_one_star(1, 2, 3)
    function_with_two_stars(a=1, b=2, c=3)
    # 结果如下
    (1, 2, 3) <</span>class 'tuple'>
    {'a': 1, 'c': 3, 'b': 2} <</span>class 'dict'>
    

    python列表和元组的区别

    来源 https://blog.csdn.net/Star_SDK/article/details/80600673

    • 元组(Tuple) t = (1, 2, 3, 4)
      列表(List) t = [1, 2, 3, 4, 5, 6]
    • 列表和元组的区别
    1. 列表是动态数组,它们可变且可以重设长度(改变其内部元素的个数)。
    2. 元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。
    3. 元组缓存于Python运行时环境,这意味着我们每次使用元组时无须访问内核去分配内存。

    这些区别结实率两者在设计哲学上的不同:

    1. 列表可被用于保存多个互相独立对象的数据集合
    2. 元组用于描述一个不会改不安的事务的多个属性
      虽然它们不支持改变大小,但是我们可以将两个元组合并成一个新元组 ,如:
    t1 = (1, 2, 3, 4)
    t2 = (5, 6, 7, 8)
    print(t1 + t2)
    

    结果:
    (1, 2, 3, 4, 5, 6, 7, 8)

    python三种字符串(无前缀,前缀u,前缀b)与encode()

    三种前缀(无前缀,前缀u,前缀b),但是字符串的类型只有两种(str,bytes)

    encode()函数根据括号内的编码方式,把str类型的字符串转换为bytes字符串,字符对应的若干十六进制数,根据编码方式决定。

    strString = b'我爱你中国'
    # b'' bytes转字符串为:
    strString.decode('utf-8')
    

    Python raise用法

    自行引发异常

    def main():
        try:
            # 使用try...except来捕捉异常
            # 此时即使程序出现异常,也不会传播给main函数
            mtd(3)
        except Exception as e:
            print('程序出现异常:', e)
        # 不使用try...except捕捉异常,异常会传播出来导致程序中止
        mtd(3)
    def mtd(a):
        if a > 0:
            raise ValueError("a的值大于0,不符合要求")
    main()
    

    Python yield

    来源 https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/

    yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。

    示例1:

    def fab(max):
        n, a, b = 0, 0, 1
        while n < max:
            yield b
            # print b
            a, b = b, a + b
            n = n + 1
    
    for n in fab(5):
        print(n)
    

    示例2:

    def count(n):
      print ("cunting" )
      while n > 0:
        print ('before yield')
        yield n  #生成值:n
        n -= 1
        print ('after yield' )
    
    for n in count(5):
        print(n)
    
    # 输出
    cunting
    before yield
    5
    after yield
    before yield
    4
    after yield
    before yield
    3
    after yield
    before yield
    2
    after yield
    before yield
    1
    after yield    
    

    为方便理解,再改成例3:

    def count(n):
      print ("cunting" )
      while n > 0:
        print ('before yield')
        yield n  #生成值:n
        n -= 1
        print ('after yield' )
    
    c = count(5)
    print("
    ")
    c.__next__()
    print("
    ")
    c.__next__()
    print("
    ")
    c.__next__()
    print("
    ")
    c.__next__()
    print("
    ")
    c.__next__()
    
    #输出:
    
    
    cunting
    before yield
    
    
    after yield
    before yield
    
    
    after yield
    before yield
    
    
    after yield
    before yield
    
    
    after yield
    before yield
    

    例4:

    def fibonacci(): 
      a=b=1
      #yield a #如果没有这个yield就不会输出a的初始值1
      #yield b #如果没有这个yield就不会输出b的初始值1
      while True: 
        a,b = b,a+b 
        yield b
    
    for num in fibonacci():
      if num > 100:
        break
      print (num),
      
      输出:
      2
      3
      5
      8
      13
      21
      34
      55
      89
    

    for在字典、列表、元组、join内

    注册for后没有冒号

    import random
    import string
    # 创建字典:
    dic = {
        str(i): i
    for i in range(5)
    }
    print(type(dic))
    print(dic)
    # 创建列表:
    list = [
      i
    for i in range(5)
    ]
    print(type(list))
    print(list)
    
    # 创建"元组"generator迭代器:
    tup = (
      i
    for i in range(5)
    )
    print(type(tup))
    print(tup)
    
    #随机生成一个11位的字符串
    bid = ''.join(random.choice(string.ascii_letters + string.digits) for x in range(11))
    print(type(bid))
    print(bid)
    输出:
    <class 'dict'>
    {'0': 'ok0yes', '1': 'ok1yes', '2': 'ok2yes', '3': 'ok3yes', '4': 'ok4yes'}
    <class 'list'>
    [0, 1, 2, 3, 4]
    <class 'generator'>
    <generator object <genexpr> at 0x0000020B66E720A0>
    <class 'str'>
    hIgc66bAm7v
    
  • 相关阅读:
    android动画(一)Interpolator
    android端手机测试体系 (转)
    Android的一些常用命令提示符(cmd)指令[转]
    五招避开银行小额账户管理费[转]
    WEB服务器、应用程序服务器、HTTP服务器区别[转]
    如何解决 “invalid resource directory name”, resource “crunch”[转]
    Eclipse中给jar包导入JavaDoc的方法
    rotium(无源码)获取控件较简单的办法
    基于Robotium框架的测试工程如何导入Robotium包的源码
    常用模块中函数的作用
  • 原文地址:https://www.cnblogs.com/zh672903/p/python.html
Copyright © 2020-2023  润新知