【python3基础】python3 神坑笔记

目录

os 篇

os.listdir(path)

以下代码在 windows 和 linux 上跑结果会不一样:

import os

path = 'wuliytTaotao'
if not os.path.exists(path):
    os.mkdir(path)

# 创建22个文件
for i in range(22):
    f = open(os.path.join(path, 'file_%02d.txt' % i), 'w')
    f.write(str(i))
    f.close()

print(os.listdir(path))            # 在 windows 和 linux 上结果不一样,windows 上有序,而 linux 上无序
print(sorted(os.listdir(path)))    # 在 windows 和 linux 上排序后的结果一样

linux上的结果:
《【python3基础】python3 神坑笔记》

运算符篇

is vs. ==

is 判断两个对象是不是同一个 id,而 == 判断两个对象的内容是否相等。判断两个对象(int、str 等)的内容是否相等,用 == 更加保险。

判断两个整数是否分别相等,用 is 可能会产生一些问题。python3 的整数常量池的范围是 [-5, 256]。用解释器一行一行执行如下程序 is 会有问题,用脚本执行就没问题:

a = 1
b = 1
a == b    # True
a is b    # True
c = 1234
d = 1234
c == d    # True
c is d    # False

运行如下程序,is 的行为在执行脚本时是否传入参数也有区别。(将如下程序保存到 tmp.py 文件中,python tmp.pypython tmp.py -b handsome 分别执行,结果不一样)

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("-b", "--boy",
                    dest="boy", type=str, default="handsome")

args = parser.parse_args()
print(args)

boy = args.boy

print(boy is 'handsome')
print(boy == 'handsome')

References

谈谈Python的常量池 — resolvewang
python3 常量池

    原文作者:wuliytTaotao
    原文地址: https://www.cnblogs.com/wuliytTaotao/p/11136620.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞