今天早上看了一篇讲python黑魔法的博客
做一下学习笔记记录
trick:
连接多个列表
>>> a = [1,2] >>> b = [3,4] >>> c = [5,6] >>> >>> sum((a,b,c), []) [1, 2, 3, 4, 5, 6]
\作为续行符
>>> a = 'talk is cheap,'\ ... 'show me the code.' >>> >>> print(a) talk is cheap,show me the code.
try...finally...
def func(): try: return 'try' finally: return 'finally' print(func()) finally
- parameter:形参(formal parameter),体现在函数内部,作用域是这个函数体。
- argument :实参(actual parameter),调用函数实际传递的参数。
+= 与 =+
对列表 进行+=
操作相当于 extend,而使用 =+
操作是新增了一个列表。
# =+ >>> a = [1, 2, 3, 4] >>> b = a >>> a = a + [5, 6, 7, 8] >>> a [1, 2, 3, 4, 5, 6, 7, 8] >>> b [1, 2, 3, 4] # += >>> a = [1, 2, 3, 4] >>> b = a >>> a += [5, 6, 7, 8] >>> a [1, 2, 3, 4, 5, 6, 7, 8] >>> b [1, 2, 3, 4, 5, 6, 7, 8]
字典合并
>>> profile = {"name": "xiaoming", "age": 27} >>> ext_info = {"gender": "male"} >>> >>> full_profile = dict(profile.items() | ext_info.items()) >>> full_profile {'gender': 'male', 'age': 27, 'name': 'xiaoming'}
或者
>>> profile = {"name": "xiaoming", "age": 27} >>> ext_info = {"gender": "male"} >>> >>> dict(list(profile.items()) + list(ext_info.items())) {'name': 'xiaoming', 'age': 27, 'gender': 'male'}
判断是否包含子串
in方法 >>> "llo" in "hello, python" True >>> >>> "lol" in "hello, python" False find方法 >>> "hello, python".find("llo") != -1 True >>> "hello, python".find("lol") != -1 False >> index方法 def is_in(full_str, sub_str): try: full_str.index(sub_str) return True except ValueError: return False print(is_in("hello, python", "llo")) # True print(is_in("hello, python", "lol")) # False count方法 #count 是完全匹配 def is_in(full_str, sub_str): return full_str.count(sub_str) > 0 print(is_in("hello, python", "llo")) # True print(is_in("hello, python", "lol")) # False 正则匹配 import re def is_in(full_str, sub_str): if re.findall(sub_str, full_str): return True else: return False print(is_in("hello, python", "llo")) # True print(is_in("hello, python", "lol")) # False
海象运算符
有了海象运算符之后,你可以和 Golang 一样(如果你没学过 Golang,那这里要注意,Golang 中的 :=
叫短变量声明,意思是声明并初始化,它和 Python 中的 :=
不是一个概念)
if (age:= 20) > 18: print("已经成年了")
转义相关
raw字符串(原始字符串):如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀r,表示这是一个 raw 字符串,里面的字符就不需要转义了。
a = r'''\n\n abc''' print(a) ------ 输出: \n\n abc ------ print(codecs.decode(a, 'unicode_escape')) ------ 输出: abc ------ print(repr(a)) ------ 输出: '\\n\\n\n\nabc'