那些年用Python踩过的坑

简介: 那些年用Python踩过的坑

👉引言💎


学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。 热爱写作,愿意让自己成为更好的人............

铭记于心
🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉


一、基础常识类


1 关于map 与 lambda表达式


  • map(函数,可迭代对象(列表等)),返回map对象,可用list转换成列表,可用for in便遍历
  • 当使用map时只是封装了一个map对象,此时并没有进行运算,需要list( )转换时才会运算

image.png

函数体或者lambda表达式中 创建局部变量与 全局变量重名,则函数体内会以新创建的 局部变量为准

image.png

  • Lambda表达式还可以结合自定义函数使用(除了与map外)
def con(args):
    x1min,x1max,x2min,x2max,x3min,x3max = args
    cons = ({'type':'ineq','fun':lambda x : x[0] - x1min},\
        {'type':'ineq','fun':lambda x:-x[0] + x1max},\
        {'type':'ineq','fun':lambda x:x[1] - x2min},\
        {'type':'ineq','fun':lambda x:-x[1] + x2max},\
        {'type':'ineq','fun':lambda x:x[2] - x3min},\
        {'type':'ineq','fun':lambda x:-x[2] + x3max})
    return cons


2 全局变量 global


t=1
global tt=1
此时 t与tt都是全局变量
但是
def test():
  t=2
  global tt=2
此时t为局部变量,tt则是全局
下面 print(t)错 print(tt)正确 
函数体内使用全局变量的方法是
 index =0
 def t():
   global index
   index+=1


  • 海象运算符的优先级是低于关系运算符的
  • 小数精确运算模块decimal
import decimal
print(decimal.Decimal('111.111')+decimal.Decimal('222.222'))
333.333
  • 类型转换: int( ),str( )等  
  • if else的几种写法
msg = "大于" if a > b else "小于"
print('大于') if a > b else print("小于")
msg = ("a小于b", "a大于b")[a > b]
msg = {2: '=2', 1: '=1', 3: '=3'}[b - a]


二、bug与问题细节类


  • 如果出现莫名其妙的问题,可以关闭python环境重新打开,比如上次 Pillow的grab 截图时出现 什么XCB不支持,结果重开pycharm就好了
  • 对于非列表与字典,numpy库等,copy后更改不会影响到原副本,但是对列表等可迭代对象却只是浅拷贝(一维表的时候复制的是值,不会对原表造成影响,但如果是二维表,则会拷贝其中一维表的内存地址,这时候如果对其中的值操作会使原表受到影响),深拷贝只能用deepcopy(需导入copy模块)
  • 类中调用类的方法一定要加self,并且向方法传递实参的时候无需传self
  • python中可用r'\\'解决 编程语言中字符串使用 正则表达式 需要用\\\\表示 \的问题
  • re findall方法会 返回匹配到的所有字符串,如果正则表达式里有 捕获,那么只返回匹配到的字符串的 捕获的组
  • 单独赋给一个字符串时r这些标志符才生效image.png


三、技巧类


  • 循环体中不需要使用自定义变量的话,可用_代替
  • python中else if 为elif;对不可变类型重新赋值,会指向一片新的空间,原空间会被抛弃(权限被系统收回)
  • for 变量 in 可迭代对象(字符串或序列) 即以循环方式将可迭代对象中的元素依次取出
  • print()自动换行,但是可以在()里语句后加入end =' ' 即为用空格代替换行,='\t'即为用\t 代替
  • decode方法是将字节数组 解码为字符串,然后encode是将字符串 编码成字节数组
  • Natsort自然排序模块
  • x = eval(input('input x: '))  eval()将输入作为表达式运算
  • set()去重,Counter 对字符串(列表)进行计数追踪,
  • a, b = map(int, input().strip().split())
  • del关键字 删除的是 变量本身,而不是其引用的数据,也就是 使用del a,再引用a则会报错
  • 内置函数 enumerate(list) 可取下标      len()计算长度
  • import 的包没有用到 会呈现灰色,但是也是已经导入了的,只是没用到而已(所以最好优化导入,避免产生包冲突)
  • type() 返回数据结构类型(list、dict、numpy.ndarray 等)
  • dtype 返回数据元素的数据类型(int、float等)
  • astype() 改变np.array中所有数据元素的数据类型]
  • print(line, end='\r')打印一行消失一行
  • 字典对值排序:sorted(dic.items(),key=lambda x: x[1]),逆向的话 如果是数值 可以 -x[1/0]
    如果有多个值,取其中几个降级排序,则可以用 operator.itrmgetter (整数序列,表示要取得下标) 获得

🌹写在最后💖: 路漫漫其修远兮,吾将上下而求索!伙伴们,再见!🌹🌹🌹

相关文章
|
1月前
|
Python
python小游戏4
python小游戏4
|
1月前
|
Python
python小游戏7
python小游戏7
|
1月前
|
Python
python小游戏5
python小游戏5
|
1月前
|
Python
python小游戏1
python小游戏1
|
1月前
|
Python
python小游戏3
python小游戏3
|
1月前
|
Python
python小游戏
python小游戏
|
3天前
|
数据采集 人工智能 Python
好玩的 Python 代码
好玩的 Python 代码
|
10月前
|
机器学习/深度学习 数据采集 数据挖掘
人生苦短,我用Python:如何入门Python的世界
人生苦短,我用Python:如何入门Python的世界
|
11月前
|
索引 Python
Python小白必看(二)
Python小白必看(二)
80 0
|
Python Windows
【Python入门】人生苦短,我用Python
【Python入门】人生苦短,我用Python