Python知识点
寻求帮助
dir(obj) # 简单的列出对象obj所包含的方法 help(obj.func) # 查询obj.func的具体介绍和用法
测试类型的三种方法,推荐第三种
if type(L) == type([]) : print("L is list") if type(L) == list: print("L is list") if isinstance(L, list): print("L is list")
Python数据类型:hash类型、不hash类型
# hash类型:即在原地不能改变的变量类型, 不可变类型。可利用hash函数查看其hash值,也可以作为字典的key "数字类型: int, float, decimal.Decimal, fractions.Fraction, complex" "字符串类型:str, bytes" "元组:tuple" "冻结集合:frozenset" "布尔类型:True, False" "None" # 不hash类型:原地可变类型:list、dict和set。它们不可以作为字典的key。 re_patt = '^(\w{3}).*::(?P<email>\w+@\w+.\w+)::(?P<number>\d+-\d+-\d+)' for item in resule_data: m = re.match(re_patt, item) if m is not None: print('*'*30) print(item) print("Email:" + m.group('email')) print('Number:' + m.group('number'))
数字常量
1234, -1234, 0, 99999999 # 整数 1.23, 1., 3.14e-10, 4E210, 4.0e+210 # 浮点数 0o123, 0X1FF, 0b010101 # 八进制、十六进制、二进制 3+4j, 3.0+4.0j, 3j # 复数常量,也可以用complex(real, image)来创建 hex(I), oct(I), bin(I) # 将十进制数转换为十六进制、八进制、二进制表示的“字符串” int(str, base) # 将字符串转为整数, base为进制数 float('inf'), float('-inf'), float('nan') # 无穷大,无穷小,非数
数字的表达式操作符
yield x # 生成器函数发送协议 lambda args: expression # 生成匿名函数 x if y else z # 三元选择表达式 x and y, x or y, not x # 逻辑与、逻辑或、逻辑非 x in y, x not in y # 成员对象测试 x is y, x is not y # 对象实体测试 x<y, x<=y, x>y, x>=y, x==y, x!=y # 大小比较,集合子集或超集值相等性操作符 1 < a < 3 # Python中允许连续比较 x|y, x&y, x^y # 位或、 位与、 位异或 x<<y, x>>y # 位操作、 x左移、 右移y位 +, -, *, /, //, %, ** # 真除法、 floor除法:返回不大于真除法结果的整数值、取余、 幂运算 -x, +x, ~x # 一元减法、 识别、 按位求补 x[i], x[i:j:k], x(......) # 索引、 分片、 调用 int(3.14), float(3) # 强制类型转换
数可以利用bit_length函数测试所占的位数
a = 1; a.bit_length() # 1 a = 1024; a.bit_length() # 11
repr和str显示格式的区别
"""
repr格式:默认的交互模式回显,产生的结果看起来它们就像是代码。
str格式:打印语句,转化成一种对用户更加友好的格式。
"""
数字相关模块
# math模块 # Decimal模块:小数模块 import decimal from decimal import Decimal Decimal("0.01") + Decimal("0.02") # 返回Decimal("0.03") decimal.getcontext().prec = 4 # 设置全局精度为4 即小数点后4位 # Fraction模块:分数模块 from fractions import Fraction x = Fraction(4, 6) # 分数类型 4/6 x = Fraction("0.25") # 分数类型 1/4 接收字符串类型的参数
集合set
""" set 是一个无序不重复元素集,基本功能包括关系测试和消除重复元素。 set 支持union(联合),intersection(交),difference(差)和symmetric_ difference(对称差集)等数学运算。 set 支持 x in set,len(set),for x in set。 set 不记录元素位置或者插入点,因此不支持indexing,slicing,或其他类序列的操作 """ s = set([1,5,9,10]) # 创建一个数值集合,返回{3,5,9,10} t = set("Hello") # 创建一个唯一字符的集合返回{} a = t | s t.union(s) # t 和 s的并集 b = t & s t.intersection(s) # t 和 s的交集 c = t - s t.difference(s) # 求差集(项在t中,但不在s中) d = t ^ s t.symmetric_difference(s) # 对称差集(项在t或s中,但不会同时出现在二者中) t.add('x') t.remove('H') # 增加/删除一个item t.update([10,37,42]) # 利用[......]更新t集合 x in s, x not in s # 集合中是否存在某个值 s.issubset(t) s.issuperset(t) s.copy() s.discard(x) s.clear() {x**2 for x in [1,2,3,4]} # 集合解析,结果:{1,4,9,16} {x for x in 'spam'} # 集合解析,结果:{'a','p','a','m'}
集合frozenset,不可变对象
""" set是可变对象,即不存在hash值,不能作为字典的键值。同样的还有list、tuple等 frozenset是不可变对象,即存在hash值,可作为字典的键值 frozenset对象没有add、remove等方法,但有union/intersection/difference等方法 """ a = set([1, 2, 3]) b = set() b.add(a) # error: set是不可哈希类 b.add(frozenset(a)) # ok,将set变为frozenset,可哈希
布尔类型bool
type(True) # 返回<class 'bool'> isinstance(False, int) # bool类型属于整形,所以返回True True == 1, True is 1 # 输出(True,False)
动态类型简介
""" 变量名通过引用,指向对象 Python中的"类型"属于对象,而不是变量,每个对象都包含有头部信息,比如"类型标识符""引用计数器"等 """ # 共享引用及在原处修改:对于可变对象,要注意尽量不要共享引用! # 共享引用和相等测试 L = [1], M = [1], L is M # 返回False L = M = [1,2,3], L is M # 返回True,共享引用 # 增强赋值和共享引用:普通+号会生成新的对象,而增加赋值+=会在原处修改 L = M = [1,2] # L = [1, 2], M = [1, 2] L = L + [3,4] # L = [1, 2, 3, 4], M = [1, 2] L += [3,4] # L = [1, 2, 3, 4, 3, 4], M = [1, 2]
常见字符串常量和表达式
S = '' # 空字符串 S = "spam's" # 双引号和单引号相同 S = "s\np\ta\x00m" # 转义字符 S = """spam""" # 三重引号字符串,一般用于函数说明 S = r'\temp' # Raw字符串,不会进行转义,抑制转义 S = b'Spam' # Python3中的字节字符串 S = u'spam' # Python2.6中的Unicode字符串 s1+s2, s1*3, s[i], s[i:j], len(s) # 字符串操作 'a %s parrot' % 'kind' # 字符串格式化表达式 'a {0} parrot'.format('kind') # 字符串格式化方法 for x in s: print(x) # 字符串迭代,成员关系 [x*2 for x in s] # 字符串列表解 ','.join(['a', 'b', 'c']) # 字符串输出,结果:a,b,c
作者:枪林弹雨丶
若标题中有【转载】字样,则本文版权归原作者所有。若无转载字样,
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,
且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
请注意:作者五行缺钱,如果喜欢这篇文章,请随意打赏!