Python-走过的坑-常用操作-实时更新

如何看源码

关注点
  • 函数下面的代码注释
  • 函数名称及参数
  • 返还值

强龙压不过地头蛇

就是说,两个变量同名,一个是局部变量一个是全局变量。
如果调用函数时,那么,同名的变量会引用局部变量。这就是所谓的强龙压不过地头蛇。

global

  • 全局变量的声明,放在局部变量中使用
  • 但是强烈不建议这么写,容易造成值的混乱
name = "lili"
def haha():
	global name
	name += name

获取帮助信息

print(help(range))

获取列表索引值

a  = [1,4,2,6,9]
for index,i in enumerate(a):
    print(index,i)

eval 拖字符串的衣服

比如a = “1+5”
那么,使用eval的话就是直接去掉" "然后得出6
也就是吧字符串转化成python代码

在这里插入图片描述

变量、包、模块。。。

在这里插入图片描述
在这里插入图片描述

zip()

a = [1,2,3]
b = [3,4,5]
c = list(zip(a,b))
d = dict(zip(a,b))
print(c)
print(d)

判断数据类型

在这里插入图片描述

使用pycharm的ctrl+Q

这个操作可以看
在这里插入图片描述
看这个函数的简单使用,和各个参数
当然我们也可以在这个函数上面按住CTRL+左键来跳转到源码这边,看源码的注释

快速导入包名

如果对应着路径将我们自己写好的包导进去是很麻烦的,我们也可以使用pycharm的快捷命令

  • 导入有一个快捷见alt+shfit+enter
  • 当然也可以指标悬停,找到对应的选项导入
    在这里插入图片描述
    悬停就会出现如下显示

时间戳的一个使用

  • 使用场景就是文件夹的一个命名之类的
ts = datetime.now().strftime('%Y-%m-%d-%H-%M-%S')
file_name = 'test_result_{}.htm'.format(ts)
file_path = os.path.join(report_path,file_name)

另一种注解->

以前我看这个符号都不知道什么意思,现在才搞懂
在这里插入图片描述

如何看python安装了哪些包

在命令行下运行$ pydoc modules即可查看

当然,还有其他办法,我直接把链接放这里:链接

字典和字符串格式相互转换会出现的坑

  • 在我的工作中,就会遇到这类问题,字典转化为字符串就会可以(可以使用str()repr()来转换,但是都会出问题),但是字符串转化为字典就会出问题,不信大家可以看下面的一个例子
a = {
            "product_key":"ckot7i80rol8yn9z",
            "device_name":"",
            "common":{
                "business":"yewu1",
                "client_type":3,
                "test_type":"",
                "game_id":"",
                "inital_time":"",
                "end_time":""
                },
            "test":{

            }
}

b = str(a)
c = repr(a)

d = dict(b)
e = dict(c)

这里就推荐使用json这个库里面的函数来完成
代码如下:


“”“
### 用下面这个方法,就实现了字典数据的存储和保存
### 如果不用下面的方法,不管是python2还是python3都是会出现读取错误的
### 也就是说如果用str(),dict(),repr()互相转换都是会出问题的,在从字符串转到字典的过程会出问题

”“”
print type(a)
b = json.dumps(a)   #吧字典转化成字符
print type(b)
c = json.loads(b)   #把字符串转化成字典
print type(c)
print c
# print type(b)

for i in range(3):
    print i
    with open("b.txt",mode="a") as f:
        f.write(json.dumps(a))
        f.write("\n")
        # j+=1

with open("b.txt",mode="r") as f:
    for i in f.readlines():
        print json.loads(i)
        print type(json.loads(i))

接着说上面的json

a = {
            "product_key":"ckot7i80rol8yn9z",
            "device_name":"",
            "common":{
                "business":"yewu1",
                "client_type":3,
                "test_type":"",
                "game_id":"",
                "inital_time":"",
                "end_time":""
                },
            "test":{

            }
}

print type(a)       #结果是字典
b = json.dumps(a)   #吧字典转化成字符
print type(b)       #结果是字符串
c = json.loads(b)   #把字符串转化成字典
print type(c)       #结果是字典
print c
  • 总结一下就是,json.loads 和 json.dunps是最变量进行操作,两个互相逆转。
  • load和dump是对文件层面的进行操作,注意,读取json格式,里面也必须是正确的json格式。
    曾经看过一篇文章,对我的帮助很大,链接

read(),readline(),readlines()区别与用法

  • f.read() 是一次性读取所有的文件,当然也可以根据字节读取,f.read(5),但是一般情况下,不推荐使用这种办法读取数据
  • f.readlines 是一行一行的读取,会防止系统的内存不足,只需要使用for循环即可,例子如下。
  • f.readline 是一次只读一行数据,这里面又一个指针,每次会从上一次指针停留的位置来读取数据。
f = open("a.json",mode="r")
content = f.readlines()
print type(content)

i = 1
for temp in content:
    print i
    print temp
    i += 1

f.close()
  • 上面的简化版
with open('a.json',mode="r") as f:
    file = f.readlines()
    j = 1
    for i in file:
        print j
        print i
        j+=1

python2中编码格式的问题

python2中,有两种编码,一个ascii还有unicode编码
u‘大收到啊’ 前面是u的就是unicode编码

默认参数最好也写进去

  • 我遇到过这样的一个例子,如果默认函数是一个空列表或者空字典,那么当这个函数,在for循环中循环的话,这些默认的空的列表和空字典会乱套的,例子如下
def list_test(a,b,list_1 = []):
    list_1.append(a)
    list_1.append(b)
    return list_1

for i in range(3):
    a = 1
    b = 2
    list_1 = list_test(a,b)

print(list_1)

其实,我们预期想要得到的结果就是[1,2]
但是,真正的结果呢?

[1, 2, 1, 2, 1, 2]

Process finished with exit code 0

需要如下修改:

for i in range(3):
    a = 1
    b = 2
    list_1 = list_test(a,b,[])
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值