note-python随记

模块

python struct

name == 'main'

__name__ 是当前模块名,当模块被直接运行时模块名为__main__。意思是,当模块被直接运行时,下面的代码块将被运行,当模块是被导入时,代码块不被运行

例子

#综合案例 - 猜丁壳
from random import randint
hands = ("Rock","Scissors","Paper")
s_hand = input("input(O:Rock,1:Scissors,2:Paper):")
if s_hand not in ['0', '1', '2']:
    print("not proper choice!exit!")
    exit()
choice = int(s_hand)
computer = randint(0,2)
print("you:",hands[choice]," ; computer:",hands[computer])
if choice == computer:
    print("draw!")
else:
    if choice == 0:
        if computer == 1:
            print("you win")
        else:
            print("you lose")
    elif choice == 1:
        if computer == 0:
            print("you lose")
        else:
            print("you win")
    else:
        if computer == 0:
            print("you win")
        elif computer == 1:
            print("you lose")

摇骰子

image-20220303095856910

1

  • 作为电传打字机来说,

      • 换行 对应字节

        0x0A
        
        • Line-Feed
        • 意思是水平不动、垂直向上喂纸
        • 所以是feed
      • 回车 对应字节

        0x0D
        
        • Carriage-Return
        • 让上图可移动的打印头(好像可移动的四轮马车 Carriage)
        • 垂直不动、水平 到纸张左侧
        • 所以是Return
    • 当 CR 和 LF 组合使用时

      • 则会将打印纸张上移一行
      • 且下一个打字位置将回到该行的最左侧
      • 也就是我们今天所理解的换行操作

操作系统 Unix 出现

  • 受限于内存和软盘空间的不足

  • 设计者决定采用单个字符来表示换行符

    • 使\n单字符替代\r\n,默认\n=\r\n
    • C 语言在编程的时候继续了这个惯例
    • 他既干了换行\n的活,又干了回车\r的活
    • Unix-Like 都是如此,包括 BSD、Linux
  • Commondore64 一度很流行

  • 同样处于节省空间的目的

  • 使用\r代替\r\n

批量替换

:%s/\\$/\\\\/gc
  • : 表示进入命令行模式执行命令

  • % 表示从第一行到最后一行全范围执行命令

  • s 表示 substitute 查找替换

  • 查找内容和替换内容用

    /
    

    隔开

    • 查找内容是

      \\$
      
      • \\$ 行结尾位置的反斜杠
      • 反斜杠本身是转义字符
      • 表示反斜杠这个字符需要两个反斜杠
      • \\ 代表一个反斜杠
      • $表示航结尾
      • \\$ 整体表示查找的是紧挨着行结尾的反斜杠
    • 替换内容是

      \\\\
      
      • \\ 代表一个反斜杠
      • \\\\ 代表两个反斜杠
  • gc
    
    • global 行中所有都查找
    • confirm 逐一确认

Python locals() 函数

以字典类型返回当前位置的全部局部变量。

  • 查询本地变量

Python input() 函数

input([prompt])
  • prompt: 提示信息

Python type() 函数

type(object)
type(name, bases, dict)
  • name -- 类的名称。
  • bases -- 基类的元组。
  • dict -- 字典,类内定义的命名空间变量。

输入自定义模块

img

python try except

img

https://www.runoob.com/python/python-exceptions.html

面向过程程序设计方法

img

Python hex() 函数

hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。

image-20220216102034524

Python oct() 函数

oct() 函数将一个整数转换成 8 进制字符串。

image-20220216135317277

Python bin() 函数

bin() 返回一个整数 int 或者长整数 long int 的二进制表示。

image-20220216102059947

Python ord() 函数

ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。

image-20220216102325114

Python eval() 函数

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

eval(expression[, globals[, locals]])

参数

  • expression -- 表达式。
  • globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
  • locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

image-20220216141005657

https://www.runoob.com/python/python-func-eval.html

随机数生成字母

  • random.randint(0,3)
    • 生成[0,3]区间中的数字
  • random.randint(0,3) + 0x41
    • 生成[0x41,0x44]区间中的数字
    • 也就是 A 到 D 的 ascii 码区间
  • chr(random.randint(0,3) + 0x41)
    • 把[0x41,0x44]区间中的数字
    • 转化为 A-D 的字符

img

Python chr() 函数

chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。

image-20220216153304786

常量

程序员约定俗成用变量名全部大写代表常量

python虽然本质上是一个变量,但却是一个不会被修改的变量,我们把它看做常量。

Python divmod() 函数

python divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。

image-20220217105043556

re 模块

  • re 是正则表达式模块

Python pow() 函数

pow() 方法返回 xy(x 的 y 次方) 的值。

以下是 math 模块 pow() 方法的语法:

import math

math.pow( x, y )

内置的 pow() 方法

pow(x, y[, z])

函数是计算 x 的 y 次方,如果 z 在存在,则再对结果进行取模,其结果等效于 pow(x,y) %z。

pow(x,y,z) 当 z 这个参数不存在时 x,y 不限制是否为 float 类型, 而当使用第三个参数的时候要保证前两个参数只能为整数。

注意:pow() 通过内置的方法直接调用,内置方法会把参数作为整型,而 math 模块则会把参数转换为 float。

运算符号

** 乘方运算

// 返回商的整数部分(向下取整

/ 除

% 返回除法的余数

* 乘

增强运算符列表

  • +=
  • −=
  • *=
  • /=
  • //=
  • %=
  • **=

就逻辑运算符来说

  • not 最高
  • and 居中
  • or 最低

img

Python sum() 函数

sum() 方法对序列进行求和计算。

语法

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

sum(iterable[, start])

参数

  • iterable -- 可迭代对象,如:列表、元组、集合。
  • start -- 指定相加的参数,如果没有设置这个值,默认为0

Python log10() 函数

log10() 方法返回以10为基数的x对数,x>0。

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

import math

math.log10( x )

注意:log10()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。

python 中数值类型总结

类型名称 描述 是否可变类型 举例
整型 int 123
浮点型 float 1.2 、1e5
分数类型 Fraction fractions.Fraction(1, 10)
精确十进制 Decimal decimal.Decimal("0.1")
复数 complex (1,-1j)

读取文件

f = open('data.txt')

读取内容

data = f.read()

读取文件10个字符,1个中文为1个字符

data1= f.read(10)

data2= f.read(10) #继续上一次读取结束位置继续读取

name=f.name #读取文件名称

data3=f.readline() #读取一行内容

data4=f.readline(10) #读取文件10个字符

data5=f.readlines() #一次性读取整个文件内容,并按行返回到list

f.flush() #将缓冲中的内容写入磁盘

f.tell() #显示当前文件的指针所在位置

f.close() #关闭打开的文件

f.seek() #对文件进行指针偏移操作,有三个模式,

​ seek(0,0) 默认移动到文件开头或简写成seek(0)

​ seek(x,1) 表示从当前指针位置向后移x(正数)个字节,如果x是负数,则是当前位置向前移动x个字节

​ seek(x,2) 表示从文件末尾向前后移x(正数)个字节,如果x负数,则是从末尾向前移动x个字节

Python replace()方法

Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。

replace()方法语法:

str.replace(old, new[, max])

sys.argv

Python 中也可以使用 syssys.argv 来获取命令行参数:

  • sys.argv 是命令行参数列表
  • len(sys.argv) 是命令行参数个数

注:sys.argv[0] 表示脚本名

Python File tell() 方法

tell() 方法返回文件的当前位置,即文件指针当前位置。

f.tell()

文件锁fcntl

  • LOCK_SH: 表示要创建一个共享锁,在任意时间内,一个文件的共享锁可以被多个进程拥有
  • LOCK_EX: 表示创建一个独享锁,在任意时间内,一个文件的排他锁只能被一个进程拥有
  • LOCK_UN: 表示删除该进程创建的锁(解锁)
  • LOCK_MAND:它主要是用于共享模式强制锁,它可以与 LOCK_READ 或者 LOCK_WRITE 联合起来使用,从而 表示是否允许并发的读操作或者并发的写操作(尽管在 flock() 的手册页中没有介绍 LOCK_MAND,但是阅读内核源代码就会发现,这在内核中已经实现了)
  • LOCK_NB: 如果指定此参数,函数不能获得文件锁就立即返回,否则,函数会等待获得文件锁。LOCK_NB可以同LOCK_SH或LOCK_EX进行按位或(|)运算操作。

**注意点**

  1. 对于文件的 close() 操作会使文件锁失效;
  2. 同理,进程结束后文件锁失效;
  3. flock() 的 LOCK_EX是“劝告锁”,系统内核不会强制检查锁的状态,需要在代码中进行文件操作的地方显式检查才能生效。
  4. 在给文件加锁之前,一定要保证文件以相应的访问模式打开,例如:
    要对一个文件加上共享锁,一定要首先按读模式打开文件;
    若要给文件加上排他锁,则首先要按写模式打开对应文件;
    若想加两种锁,则需要按读写模式打开.

image-20220223144333031

Python File fileno() 方法

fileno() 方法返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作。

image-20220223144936497

Python open() 函数

不同模式打开文件的完全列表:

模式 描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(不推荐)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

Python decode()方法

Python decode() 方法以 encoding 指定的编码格式解码字符串。默认编码为字符串编码。

decode()方法语法:

str.decode(encoding='UTF-8',errors='strict')

参数

  • encoding -- 要使用的编码,如"UTF-8"。
  • errors -- 设置不同错误的处理方案。默认为 'strict',意为编码错误引起一个UnicodeError。 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。

image-20220224095348395

os.system方法

https://blog.csdn.net/ningyanggege/article/details/90677243

img

python with关键字

with表达式其实是try-finally的简写形式。

https://www.jianshu.com/p/5b01fb36fd4c

Python List append()方法

append() 方法用于在列表末尾添加新的对象。

Python List remove()方法

remove() 函数用于移除列表中某个值的第一个匹配项。

Python 列表 clear() 方法

从 列表删除所有元素:

Python List len()方法

len() 方法返回列表元素个数。

len()方法语法:

len(list)

Python List count()方法

count() 方法用于统计某个元素在列表中出现的次数。

count()方法语法:

list.count(obj)
  • obj -- 列表中统计的对象。

Python count()方法

Python count() 方法用于统计字符串里某个字符或子字符串出现的次数。可选参数为在字符串搜索的开始与结束位置。

count()方法语法:

str.count(sub, start= 0,end=len(string))

参数

  • sub -- 搜索的子字符串
  • start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
  • end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。

image-20220224151558620

Python List extend()方法

extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。

extend()方法语法:

list.extend(seq)
  • seq -- 元素列表。

区别

img

  • 操作对象不同
  • append 添加的是具体的元素
  • extend 是追加另一个列表
  • 我们再试试乘法运算

index find

img

img

Python List reverse()方法

reverse() 函数用于反向列表中元素。

reverse()方法语法:

list.reverse()

Python3 reversed 函数

描述

reversed 函数返回一个反转的迭代器。

语法

以下是 reversed 的语法:

reversed(seq)

参数

  • seq -- 要转换的序列,可以是 tuple, string, list 或 range。

返回值

返回一个反转的迭代器。

Python3 List sort()方法

sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。

sort()方法语法:

list.sort( key=None, reverse=False)

参数

  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

Python3 sorted() 函数

sorted() 函数对所有可迭代的对象进行排序操作。

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

Python shuffle() 函数

shuffle() 方法将序列的所有元素随机排序。

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

import random

random.shuffle (lst )

注意:shuffle()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。

Python List insert()方法

insert() 函数用于将指定对象插入列表的指定位置。

insert()方法语法:

list.insert(index, obj)

参数

  • index -- 对象 obj 需要插入的索引位置。
  • obj -- 要插入列表中的对象。

image-20220228095212779

Python List pop()方法

pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

pop()方法语法:

list.pop([index=-1])

pop()在 set、list 中的不同

  • list 是有序的,弹出的是最后一个
  • set 是无序的,随机弹出一个

Python zip() 函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。

如果需要了解 Python3 的应用,可以参考 Python3 zip()

zip 语法:

zip([iterable, ...])

参数说明:

  • iterabl -- 一个或多个迭代器;

image-20220228103138642

Python 直接赋值、浅拷贝和深度拷贝解析

https://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html

元组

逗号分割开的数值默认也是元组

只支持这两个函数

  • count
  • index

搜索值
开始位置 start
结束位置 stop

Python Set add()方法

add() 方法用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。

add()方法语法:

set.add(elmnt)

Python Set discard() 方法

discard() 方法用于移除指定的集合元素。

该方法不同于 remove() 方法,因为 remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。

discard() 方法语法:

set.discard(value)

Python frozenset() 函数

frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

frozenset() 函数语法:

class frozenset([iterable])

Python Set intersection() 方法

intersection() 方法用于返回两个或更多集合中都包含的元素,即交集。

intersection() 方法语法:

set.intersection(set1, set2 ... etc)

参数

  • set1 -- 必需,要查找相同元素的集合
  • set2 -- 可选,其他要查找相同元素的集合,可以多个,多个使用逗号 , 隔开

Python Set intersection_update() 方法

intersection_update() 方法语法:

set.intersection_update(set1, set2 ... etc)

参数

  • set1 -- 必需,要查找相同元素的集合
  • set2 -- 可选,其他要查找相同元素的集合,可以多个,多个使用逗号 , 隔开

Python Set union() 方法

union() 方法返回两个集合的并集,即包含了所有集合的元素,重复的元素只会出现一次。

union() 方法语法:

set.union(set1, set2...)

参数

  • set1 -- 必需,合并的目标集合
  • set2 -- 可选,其他要合并的集合,可以多个,多个使用逗号 , 隔开。

Python Set update() 方法

update() 方法用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。

update() 方法语法:

set.update(set)

参数

  • set -- 必需,可以是元素或集合

Python Set difference() 方法

difference() 方法用于返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合(方法的参数)中。

difference() 方法语法:

set.difference(set)

参数

  • set -- 必需,用于计算差集的集合

Python Set difference_update() 方法

difference_update() 方法用于移除两个集合中都存在的元素。

difference_update() 方法与 difference() 方法的区别在于 difference() 方法返回一个移除相同元素的新集合,而 difference_update() 方法是直接在原来的集合中移除元素,没有返回值。

difference_update() 方法语法:

set.difference_update(set)

参数

  • set -- 必需,用于计算差集的集合

Python Set symmetric_difference() 方法

symmetric_difference() 方法返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素。

symmetric_difference() 方法语法:

set.symmetric_difference(set)

参数

  • set -- 集合

Python Set symmetric_difference_update() 方法

symmetric_difference_update() 方法移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

symmetric_difference_update() 方法语法:

set.symmetric_difference_update(set)

参数

  • set -- 要检测的集合

Python Set isdisjoint() 方法

isdisjoint() 方法用于判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。。

语法

isdisjoint() 方法语法:

set.isdisjoint(set)

参数

  • set -- 必需,要比较的集合

返回值

返回布尔值,如果不包含返回 True,否则返回 False。

Python Set issubset() 方法

issubset() 方法用于判断集合的所有元素是否都包含在指定集合中,如果是则返回 True,否则返回 False。

语法

issubset() 方法语法:

set.issubset(set)

参数

  • set -- 必需,要比查找的集合

返回值

返回布尔值,如果都包含返回 True,否则返回 False。

Python 字典(Dictionary) setdefault()方法

Python 字典 setdefault() 函数和 get()方法 类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

setdefault() 方法语法:

dict.setdefault(key, default=None)

参数

  • key -- 查找的键值。
  • default -- 键不存在时,设置的默认键值。

image-20220228151624827

Python 字典(Dictionary) items()方法

Python 字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组。

语法

items()方法语法:

dict.items()

image-20220307143335408

image-20220307143359429

python pickle用法

https://blog.csdn.net/weixin_36115496/article/details/114912062

is

  • is 判断是否相等
  • 具体用 == 还是 is 和变量类型相关
  • int、float、str 之类的相等判断最好用 == 和 !=
  • 容器类对象的比较可以灵活运用 is 或者 ==
  • is 为 True 代表两个东西 id 相等
    • 或者说用的是同一个盒子
    • 在内存中占的是同一块空间

Python isinstance() 函数

描述

isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。

isinstance() 与 type() 区别:

  • type() 不会认为子类是一种父类类型,不考虑继承关系。
  • isinstance() 会认为子类是一种父类类型,考虑继承关系。

如果要判断两个类型是否相同推荐使用 isinstance()。

语法

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

isinstance(object, classinfo)

参数

  • object -- 实例对象。
  • classinfo -- 可以是直接或间接类名、基本类型或者由它们组成的元组。

返回值

如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False

Python enumerate() 函数

image-20220307152205784

Python fractions 模块

https://www.runoob.com/note/24857

python中inf

https://blog.csdn.net/jeremyjone/article/details/80503488

NaN

Python strip()方法

image-20220308094453812

Python rstrip()方法

image-20220329101858852

time

# 格式化成2016-03-20 11:45:39形式
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) 

python中时间日期格式化符号:

  • %y 两位数的年份表示(00-99)
  • %Y 四位数的年份表示(000-9999)
  • %m 月份(01-12)
  • %d 月内中的一天(0-31)
  • %H 24小时制小时数(0-23)
  • %I 12小时制小时数(01-12)
  • %M 分钟数(00-59)
  • %S 秒(00-59)
  • %a 本地简化星期名称
  • %A 本地完整星期名称
  • %b 本地简化的月份名称
  • %B 本地完整的月份名称
  • %c 本地相应的日期表示和时间表示
  • %j 年内的一天(001-366)
  • %p 本地A.M.或P.M.的等价符
  • %U 一年中的星期数(00-53)星期天为星期的开始
  • %w 星期(0-6),星期天为星期的开始
  • %W 一年中的星期数(00-53)星期一为星期的开始
  • %x 本地相应的日期表示
  • %X 本地相应的时间表示
  • %Z 当前时区的名称
  • %% %号本身
posted @   yy9knsg  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示