zoukankan      html  css  js  c++  java
  • Python3使用过程中需要注意的点

    命名规则

    变量

    变量名只能是数字、字母或下划线的任意组合

    变量名的第一个字符不能是数字

    不能使用关键字作为变量名

    变量的定义要具有可描述性

    变量名不宜过长、不宜使用中文、拼音

    常量(常用在配置文件中)

    程序运行过程中不会改变的量,即常量。全部字母大写(约定俗成)。

    书写形式

    驼峰体(类名)

    下划线方式(函数名)

    引号的使用

           单引号和双引号用法作用相同,只是在同行代码中有较多引号时需要单引双引交叉使用,以此来方便让解释器和程序员区分所作用域。

    格式化输出

    %s就是代表字符串占位符,除此之外,还有%d,是数字占位符,想要输出百分号时加双重百分号即可

    info='''
    
    字符串1:%s
    
    整型2:%d
    
    字符串3:%s
    
    '''%('1',2,'3')
    
    print(info)

    a=f’这是{变量名}’

    终止循环体的方法区别

    break

           跳出break所在层循环体

    quit()、exit()——不建议使用

           调用系统命令,结束程序。

    continue

           结束本次循环,继续下一次循环,不结束循环体。

    ASCII、Unicode、UTF-8、GBK 区别

    python2内容进行编码(默认ASCII),而python3对内容进行编码的默认为UTF-8。

    ASCII

           最多只能用8位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。不支持中文

    Unicode(万国码)

        UCS -2 是使用2个字节  

        UCS -4 是使用4个字节   

    UTF-8

           万国码的升级版

           一个中文字符=三个字节、英文是一个字节、欧洲的是2个字节、亚洲3个字节

    GBK

           国标

           一个中文字符=2个字节、英文是一个字节

    GBK转UTF-8需通过媒介Unicode

    数据类型方面

    如何判断是否为可变数据类型:通过哈希。

    有序:支持索引

    Int

    进制转换

           二进制转十进制:10 1111 = 1*2**0+1*2**1+1*2**2+1*2**3+1*2**5

           十进制转二进制:用十进制数除2逆序取余

    正负相除

    >>> 10%-3
    
    -2
    
    >>> -10%3
    
    2
    
    先取最近的两个商,然后用第一个数减去这两个数的积
    
    10-(-3*-4)
    
    -10-(-3*-4)

    str

    内置方法

    str.count(‘a’):返回a在str中出现的次数。

    str.index(‘a’):返回a在str中的索引,且只返回一个,如果a不在str中会报出异常。

    str.find(‘a’):检测str是否包含在字符串中,如果指定范围beg和end,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1

    str.split(‘a’):以a分割str,如果a在str末尾,则加个空值。

    str.startswith(‘a’):检测str是否以a开头。

    str.strip(‘a’):去除str两端的a

    str.replace(‘a’,’e’):替换str中的a为e

    str.join(‘aa’):以指定字符串作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串。

    str.isdigit():如果字符串只包含数字则返回True否则返回False..。

    str.isdecimal():判断是否是十进制。

    str.isalpha():判断字母,中文。

    str.isalnum():字母、数字、中文。

    str.capitalize():将字符串的第一个字符转换为大写。

    str.title():返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写

    str.center():居中

    str.format():格式化功能

    list

    增删操作时要注意:列表可变,每次的增删操作会改变列表长度。

    list.append(obj):在列表末尾添加对象

    list.insert(index,obj):在list的index索引位置添加obj

    list.extend(seq):在列表末尾一次性追加另一个序列中的值

    list.pop(index):如果括号内没有值,则默认删除最后一个。

    list.remove(obj):删除列表中第一个obj匹配项

    list.clear():清空列表

    dict

    字典无序可变

    radiansdict.clear():删除字典内所有元素

    radiansdict.copy():返回一个字典的浅复制

    radiansdict.fromkeys():创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

    radiansdict.get(key, default=None):返回指定键的值,如果值不在字典中返回default值

    key in dict:如果键在字典dict里返回true,否则返回false

    radiansdict.items():以列表返回可遍历的(键, 值) 元组数组

    radiansdict.keys():返回一个迭代器,可以使用 list() 来转换为列表

    radiansdict.setdefault(key, default=None):和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

    radiansdict.update(dict2):把字典dict2的键/值对更新到dict里

    radiansdict.values():返回一个迭代器,可以使用 list() 来转换为列表

    pop(key[,default]):删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

    popitem():随机返回并删除字典中的一对键和值(一般删除末尾对)。

    函数方面

    函数的返回值

    返回单个值时直接返回

    返回多个时可以直接返回,也可用元组。

    函数传参

    实参角度

    位置参数

    关键字参数

    混合参数

    注:位置参数要在关键字参数前面

           关键字参数与形参的名字对应

    形参角度

    位置参数

    默认参数

    动态参数

    仅限关键字参数(在*args和**kwargs中间,必须传参,不传报错)

    更改全局变量

    name = "zhao"
    
    def change_name():
    
        global name #声明一个全局变量
    
        name = "zhaoruofei"
    
        print("after change", name)
    
    change_name()
    
    print("当前name", name)

    匿名函数

    常与其他函数连用

    res = map(lambda x:x**2,[1,2,3,4])
    
    for i in res:
    
    print(i)

    递归函数

    l  函数内部调用自身

    l  整个函数体有明确的结束条件

    l  递归层次越深,应问题规模越少

    l  官方默认层次,官方说明1000,实际998/997

    闭包

    闭包原理

    嵌套函数中,内层函数调用外层函数的非全局变量就是闭包。

    闭包作用

    被引用的变量被称为自由变量,不会随着函数的结束而消失,保证数据安全。

    闭包应用

    装饰器

    装饰器

    简易装饰器模板

    def wrapper(func):
    
        def inner(*args,**kwargs):
    
            print('主代码前添加的功能')
    
            ret=func(*args,**kwargs)
    
            print('主代码后添加的功能')
    
            return ret
    
        return inner
    
     
    
    @wrapper
    
    def func():
    
        print('主代码')

    利用装饰器完成的登录认证

    def wrapper(func):
    
        def inner(*args, **kwargs):
    
            username = input('请输入用户名:')
    
            password = input('请输入密码:')
    
            ret = func(username, password)
    
            if ret == '1':
    
                print('登录成功')
    
            else:
    
                print('登录失败')
    
            return ret
    
     
    
        return inner
    
     
    
     
    
    @wrapper
    
    def func(username, password):
    
        if username == 'zhaoruofei' and password == '123':
    
            return '1'
    
        else:
    
            return '2'
    
     
    
     
    
    func()

    装饰器的执行流程

           wrapper(func)

    内置函数

    https://www.runoob.com/python3/python3-built-in-functions.html

    面向对象

    单例模式

    概念

           某个进程在生命周期内某类只存在一个实例对象,使用场景例如logger,配置模块,数据库连接池等,单实例可以减少资源使用,保证唯一性。

    实现单例模式的方式

    1. 给类添加装饰器
    2. 导入模块

           根据python解释器当import一个py文件时都会把该文件编码为pyc流,当再次import就直接读取pyc文件,除非py文件内容有所更改才会再次编码的原理,将要单例的类封装入一个py文件中,使用时导入即可。达到单例效果。

    1. new的方式

           使用__new__这个魔术方法主要是在类初始化时进行控制。魔术方法可以理解为python代码和解释器的一种规约,python类在实例化时首先调用__new__去创建一个对象再__init__去初始化这个new出来的对象,所以__new__这个方法必须返回一个对象。当类中没有显式定义__new__方法时会调用父类中的__new__方法。所以要实现单例可以显式定义__new__方法。

    1. 元类重写元类的__call__方法

           类修饰器和函数修饰器都是同个功能:帮被修饰的对象打个包装再返回该对象,所以实现单实例也比较好理解

    内置方法

           https://www.cnblogs.com/1oo88/p/10596675.html

    __init__ : 构造函数,在生成对象时调用

    __del__ : 析构函数,释放对象时使用

    __repr__ : 打印,转换

    __setitem__ : 按照索引赋值

    __getitem__: 按照索引获取值

    __len__: 获得长度

    __cmp__: 比较运算

    __call__: 函数调用

    __add__: 加运算

    __sub__: 减运算

    __mul__: 乘运算

    __truediv__: 除运算

    __mod__: 求余运算

    __pow__: 乘方

  • 相关阅读:
    WampServer Mysql配置
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 前10名
  • 原文地址:https://www.cnblogs.com/1oo88/p/11426934.html
Copyright © 2011-2022 走看看