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__: 乘方

  • 相关阅读:
    python模块之linecache
    如何在cmd命令下运行python脚本
    Git remote: ERROR: missing Change-Id in commit message
    Git命令git update-index --assume-unchanged,忽略不想提交的文件(忽略跟踪)
    Git命令cherry-pick,选择把一部分代码提交到另一个分支
    Redis可以用来做什么?(摘自http://www.lianpenglin.cc廉鹏林博客)
    Yii笔记:打印sql、Form表单、时间插件、Mysql的 FIND_IN_SET函数使用、是否是post/ajax请求
    Yii1使用Gii生成模块实现CURD
    通过经纬度获取所属城市信息-php
    树莓派进阶之路 (010)
  • 原文地址:https://www.cnblogs.com/1oo88/p/11426934.html
Copyright © 2011-2022 走看看