博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python——杂货铺
阅读量:4460 次
发布时间:2019-06-08

本文共 3164 字,大约阅读时间需要 10 分钟。

三目运算:

>>> 1 if 5>3 else 01>>> 1 if 5<3 else 00

深浅拷贝:

一、数字和字符串

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

import copy# ######### 数字、字符串 #########n1 = 123# n1 = "i am alex age 10"print(id(n1))# ## 赋值 ##n2 = n1print(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.quitemail("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
import hashlibdef md5(arg):    hash = hashlib.md5(bytes('licheng', encoding='utf-8'))    # 设置加密的密码    hash.update(bytes(arg, encoding="utf-8"))    return hash.hexdigest()def register(user,pwd):    with open("db",'a',encoding="utf-8") as f:        temp = user + "|" + md5(pwd)+ "\n"        f.write(temp)def login(user,pwd):    with open("db","r",encoding="utf-8") as f:        for line in f:            u, p = line.strip().split("|")            if u == user and p == md5(pwd):                return Truechoose = input("1.登录\n 2.注册")if choose == "2":    user = input("用户名:")    pwd = input("密码:")    register(user,pwd)elif choose == "1":    user = input("用户名:")    pwd = input("密码:")    judge = login(user,pwd)    if judge:        print("登陆成功")    else:        print("登录失败")
实例:登录密码加密保存

enumrate

>>> for i,j in enumerate([1,2,3]): print i,j 0 11 22 3>>> for i,j in enumerate({
'a':1,'b':2}): print i,j #字典默认遍历key0 a1 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,执行一个功能,自身进行变化。

转载于:https://www.cnblogs.com/LiCheng-/p/6431270.html

你可能感兴趣的文章
软件工程 第一次作业
查看>>
Content Server HA搭建
查看>>
vue-textarea 自适应高度
查看>>
(2)数据结构——线性表(链表)实现
查看>>
[leetCode]Linked List Cycle I+II
查看>>
leetcode中的python学习
查看>>
sqlserver打开对象资源管理器管理的帮助文档的快捷键
查看>>
JBOSSAS 5.x/6.x 反序列化命令执行漏洞(CVE-2017-12149)
查看>>
Zookeeper zkui-zookeeper图形化管理工具
查看>>
java运行时内存分类
查看>>
为什么说 Git 比 SVN 更好
查看>>
1.基础数据类型的初识 字符串 bool 整型 if else elif
查看>>
【设计模式】4、原型模式
查看>>
进入meta模式关闭背光灯
查看>>
webstorm上svn的安装使用
查看>>
【JEECG技术文档】数据权限自定义SQL表达式用法说明
查看>>
使用 Bootstrap Typeahead 组件
查看>>
linux_cacti 配置之 安装snmp 服务
查看>>
201407-至今
查看>>
c# 应用事务
查看>>