python——杂货铺
三目运算:
>>> 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('',encoding="utf-8"))
print(hash.hexdigest())
# b72a6beb24eef36c247274014dd4ade3
import hashlib def 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 True choose = input("1.登录\n 2.注册")
if choose == "":
user = input("用户名:")
pwd = input("密码:")
register(user,pwd)
elif choose == "":
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 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,执行一个功能,自身进行变化。
python——杂货铺的更多相关文章
- python 杂货铺
python 杂货铺之不知道的python操作 1.交互模式下的神奇的_ windos中cmd交互模式中下(python2,python3),最近一个表达式的值赋给变量 _.这样我们就可以把它当作一个 ...
- 【Python杂货铺】速学python基础
"人生苦短,我学python"是编程届的名言.用python写小脚本的便捷性,让很多其他语言的学习者把python当作辅助语言.拥有了某一个语言的功底,再来学习另外一种语言应该是十 ...
- Pyhton开发【第五篇】:Python基础之杂货铺
Python开发[第五篇]:Python基础之杂货铺 字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进 ...
- Python特技杂货铺
Python3特技杂货铺 Python3实现汉字简体和繁体相互转换 Python3中通过fake_useragent生成随机UserAgent 修改线上配置文件 PyCharm中项目上传到GitHub ...
- Python学习【第十篇】基础之杂货铺
字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存. 百分号方式: ...
- Python开发【杂货铺】:模块logging
logging模块 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式 ...
- Python开发【第五篇】:Python基础之杂货铺
字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-310 ...
- Python开发【杂货铺】:五个知识点搞定作用域
1.块级作用域 想想此时运行下面的程序会有输出吗?执行会成功吗? #块级作用域 if 1 == 1: name = "lzl" print(name) for i in range ...
- 【Python之路】第五篇--Python基础之杂货铺
字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存. 1.百分号方式 ...
随机推荐
- 算法模板——平衡树Treap
实现功能如下——1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数,因输出最小的排名)4. 查询排名为x的数5. 求x的前驱(前驱定义为小于x,且最大 ...
- VMware10虚拟机安装mac os x 10.9
身边越来越多盆友们购进mac本子,不断地诱惑着小编,近日一直想着买一台mac本子装逼,后来想想用来开发(非ios)可能会遇着各种问题,就先在虚拟机上玩玩看,毕竟1,2万RMB不是小数. 在mac os ...
- Internet Information Services安装与启动
Internet Information Services安装 1.打开控制面板——程序——启动或关闭windows功能 2.找到Internet Information Services ——将其全 ...
- 关于数据库与JAVA连接及其出现问题的解决方式
数据库连接java的方式一共有两个 建立JDBC-ODBC桥接器 加载纯JAVA数据库驱动程序 注意: JDBC-ODBC桥接器无需下载数据库的驱动程序,但是JDK1.8已经把JDBC-ODBC桥接器 ...
- VC++中解决“在查找预编译头使用时跳过”的方法
Visual C++ Concepts: Building a C/C++ ProgramCompiler Warning (level 1) C4627Error Message": sk ...
- CCNA网络工程师学习进程(10)NAT的配置
NAT(Network Address Translation,网络地址转换)是将IP 数据包头中的IP 地址转换为另一个IP 地址的过程. (1)NAT简介: 在实际应用中,NAT ...
- SQL Server的学习
一.建库和表1.新建数据库语法: CREATE DATABASE SuperMarket//建立一个名为SuperMarket的数据库. 2.打开数据库语法: USE SuperMarket//打开刚 ...
- linux 下的 mkfifo、exec 命令使用
MKFIFOSection: User Commands (1)Updated: 1998年11月Index Return to Main Contents NAME(名称)mkfifo - 创建F ...
- h5 做app时和原生交互的小常识。
距离上次随笔或许有半年了吧,最近在用hybrid模式开发移动app,所以就简单的说说用h5技术开发app时候,做原生交互的几个小常识: 一.拨打电话或者发送短信: <a href="t ...
- Git 远程分支的pull与push
Git 远程分支的pull与push 远程分支信息查看 git branch -r #查看远程分支 git branch -a #查看所有分支,本地和远程 git remote show [remot ...