ython——杂货铺

Posted 叶常绿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ython——杂货铺相关的知识,希望对你有一定的参考价值。

三目运算:

>>> 1 if 5>3 else 0
1
>>> 1 if 5<3 else 0
0

深浅拷贝:

一、数字和字符串

对于 数字 和 字符串 而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。

复制代码
import copy
# ######### 数字、字符串 #########
n1 = 123
# n1 = "i am alex age 10"
print(id(n1))
# ## 赋值 ##
n2 = n1
print(id(n2))
# ## 浅拷贝 ##
n2 = copy.copy(n1)
print(id(n2))
22219144
# ## 深拷贝 ##
n3 = copy.deepcopy(n1)
print(id(n3))
22219144
复制代码

二、其他基本数据类型

对于字典、元祖、列表 而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。

1、赋值

赋值,只是创建一个变量,该变量指向原来内存地址,如:

n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
n2 = n1

2、浅拷贝

浅拷贝,在内存中只额外创建第一层数据

import copy
  
n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
  
n3 = copy.copy(n1)

3、深拷贝

深拷贝,在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化)

import copy
  
n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
  
n4 = copy.deepcopy(n1)

函数扩展:发送邮件实例

复制代码
def emil(p):
    import smtplib
    from email.mime.text import MIMEText
    from email.utils import formataddr
  
  
    msg = MIMEText(\'邮件内容\', \'plain\', \'utf-8\')
  # From 后面的邮箱地址一定要跟发送邮箱地址相同,不然会认证失败 msg[\'From\'] = formataddr(["武沛齐",\'wptawy@126.com\']) msg[\'To\'] = formataddr(["走人",\'424662508@qq.com\']) msg[\'Subject\'] = "主题" server = smtplib.SMTP("smtp.126.com", 25) server.login("wptawy@126.com", "邮箱密码") server.sendmail(\'wptawy@126.com\', [p,], msg.as_string()) server.quit email("244591052@qq.com")
复制代码

加密(hashlib)

复制代码
import hashlib
# 设置自己的加密字符串,防止他人撞库破解
hash = hashlib.md5(bytes(\'sfa\',encoding=\'utf-8\'))
# 设置加密的密码
hash.update(bytes(\'123\',encoding="utf-8"))
print(hash.hexdigest())
# b72a6beb24eef36c247274014dd4ade3
复制代码
 实例:登录密码加密保存

enumrate

复制代码
>>> for i,j in enumerate([1,2,3]):
 print i,j
 
0 1
1 2
2 3
>>> for i,j in enumerate({\'a\':1,\'b\':2}):
 print i,j
 #字典默认遍历key
0 a
1 b
复制代码
复制代码
li = [\'冰箱\',\'彩电\',\'洗衣机\']
# 可以指定序号从什么开始计数
for index,i in enumerate(li,1):
    print(index,i)
# 1 冰箱
# 2 彩电
# 3 洗衣机
# 虽然显示是从1开始,但系统内还是以0开始计数的
复制代码

range,xrange

复制代码
>>> range(1,5) #代表从1到5(不包含5)
[1, 2, 3, 4]
>>> range(1,5,2) #代表从1到5,间隔2(不包含5)
[1, 3]
>>> range(5) #代表从0到5(不包含5)
[0, 1, 2, 3, 4]
复制代码

python2中:

range——获取指定范围内的数,且立刻在内存中生成

xrange——获取指定范围内的数,但只有在for循环调用的时候才在内存中生成,节省内存

python3中:

舍弃了xrange,python3中的range相当于Python2中的xrange。

内置函数:

复制代码
print(__name__)  #本文件被执行时输出__main__,否则输出模块名

print(__doc__)  #输出 py 文件的注释

print(__file__)   # 输出自己文件的路径
#可以配合常用os操作完成系统路径的修改:
p1 = os.path.dirname(__file__)
p2 = "lib"
my_dir = os.path.join(p1, p2)
sys.path.append(my_dir)

print(__package__)  # 输出当前.py所在文件夹,用.划分
复制代码

小知识点

  • 对于字符串,执行一个功能,生成一个新内容,原来的内容不变。
  • 对于list、tuple、dict,执行一个功能,自身进行变化。

以上是关于ython——杂货铺的主要内容,如果未能解决你的问题,请参考以下文章

C语言的一些杂货

51cto代码语言样式参考

Python 杂货铺

解忧杂货铺----读后感

杂货铺

杂货铺