一、写代码的时候少用全局变量。
①、不安全。因为项目代码可能由多人共同完成,全局变量容易被别人误修改。
②、全局变量占用系统内存。前端
二、函数有多个返回值(return)的时候,返回值是存放在元组里,而后返回。
def hello(a,b,c,d):
return a,b,c,d
a = 2
b = 1
# b = 1 a = 2
# b,a = a,b #交换两个变量的值
# print(a,b)
a = a + b #3
b = a - b #2
a = a - b #3-2java
三、列表推导式
nums = [1, 2, 3, 4, 5]
# 列表推导式
new_nums = [str(x) for x in nums] # 将nums的元素转换成字符串
# new_nums = [x-1 for x in nums]
print(new_nums)python
四、一个函数尽可能指实现一个功能
实现一样的功能,代码越少,越牛逼linux
五、测试开发
开发工具、平台
前端 后端 数据库 部署 中间件git
自动化测试
经过写代码来作测试,提升测试效率
6.map和filter
#filter也是帮你循环调用函数的,filter只保存结果返回真的。
def func(a): #0 1 2
if a%2==0:
return True
else:
return False
nums = [x for x in range(11)]
res = filter(func,nums)
print(list(res))sql
#map
# all_res = []
# for num in nums:
# res = func(num)
# all_res.append(res)
#
# res = map(func,nums) #
#
# print(list(res))
#循环调用函数,而后把每次函数处理的结果,放到一个list里面返回数据库
7.函数即变量
def add():
print('添加商品')
def view():
print('查看商品')
def delete():
print('删除商品')json
choice = input('请输入选择 一、二、三、').strip()windows
menu = {
'1':add,
'2':view,
'3':delete
}
if choice in menu:
menu[choice]() #适合用于函数没有参数,或者参数是同样的状况下。
else:
print('输入错误')后端
8.处理json
import json
#json串就是字符串。
d = {
'car':{'color':'red','price':100,'count':50},
'挨粪叉':{'color':'red','price':100,'count':50},
'挨粪叉1':{'color':'red','price':100,'count':50},
'挨粪叉2':{'color':'red','price':100,'count':50},
'挨粪叉3':{'color':'red','price':100,'count':50},
'挨粪叉4':{'color':'red','price':100,'count':50}
}
dumps
# res = json.dumps(d,indent=8,ensure_ascii=False) #把list、字典转成json,indent多少缩进,ensure_ascii能够显示中文
# f1 = open('f1','w',encoding='utf-8')
# f1.write(res)
loads
# f1 = open('f1',encoding='utf-8')
# res = f1.read()
# dict_res = json.loads(res) #把json串变成python的数据类型
# print(dict_res)
dump
# f1 = open('f1','w',encoding='utf-8')
# json.dump(d,f1,ensure_ascii=False,indent=4)
#自动帮你写入文件,第一个参数是数据,第二个是文件对象
load
f1 = open('f1',encoding='utf-8')
print(json.load(f1))
#自动帮你读文件。
9.经常使用模块
import os
# print(os.getcwd())#取当前工做目录
# print(os.chdir("..")) # 更改当前目录
# print(os.getcwd())#取当前工做目录
# print(os.curdir) # 当前目录,相对路径
# print(os.pardir) # 父目录,相对路径
# print(os.mkdir("test1")) # 建立文件夹
# print(os.rmdir("test1")) # 只能删除空文件夹
# print(os.remove("../day4/5.png")) # 删除文件,不能删文件夹。
# print(os.listdir('c://')) # 列出一个目录下的全部文件
# os.rename("test", "test1") # 重命名
# print(os.stat("笔记.txt"))#获取文件信息
# print(__file__) #__file__就是这个文件的绝对路径
# print(os.path.abspath(__file__)) # 获取绝对路径
# print(os.path.split("c:\\usr\\hehe\\hehe.txt")) # 分割路径和文件名
# print(os.path.dirname("c:\\usr\\hehe\\hehe.txt")) # 获取父目录
# print(os.path.basename("c:\\usr\\hehe\\hehe.txt")) # 获取最后一级,若是是文件显示文件名,若是是目录显示目录名
# print(os.path.exists("c://test2")) # 目录/文件是否存在
# print(os.path.isfile(r"E:\txz\day2.zip"))#判断是不是一个文件
# print(os.path.isdir(r"E:\txz\day2"))#是不是一个文件夹
# name = 'a.sql'
# print(os.path.join("e",name))#拼接成一个路径
# print(os.sep) # 当前操做系统的路径分隔符
# print(os.linesep) # 当前操做系统的换行符
# print(os.pathsep) # 当前系统的环境变量中每一个路径的分隔符,linux是:,windows是;
# print(os.environ) # 当前系统的环境变量
# print(os.name) # 当前系统名称
# c://java/jre;c://python
# /usr/local:/root
#os.system('dir') #用来执行操做系统命令,只能执行,获取不到结果
# res = os.popen('ipconfig') #用来执行操做系统命令,而且获取到返回结果.read
# print(res.read())
#常量
import sys
# print(sys.path) #环境变量
# print(sys.platform) #看当前系统是什么
# print(sys.version)#看python的版本
# print(sys.exit('程序退出'))
# quit('程序退出') #退出程序
# print('hahaha')
# def fun(a):
# pass
print(sys.argv) #是获取运行python文件的时候 传入的参数
#python xxx.py
随机数模块
import random,string
# print(random.randint(1,199))#1-199随机取一个整数
# print(string.digits) #全部的数字0-9
# print(string.ascii_lowercase) #全部的小写字母
# print(string.ascii_uppercase) #全部的大写字母
# print(string.ascii_letters) #全部的小写字母+全部的大写字母
# print(string.punctuation) #全部的特殊字符
# s = random.choice(['ybq','mpp','zhx','df'])#随机取一个元素
# s = random.choice()#随机取一个元素
# res = random.sample(string.digits,3) #随机取N个元素
# print(''.join(res))
# res = random.uniform(1,9)#取随机小数??
# print(res)
# print(round(res,2))# 保留几位小数,若是四舍五入以后,最后一位小数是0,那么不显示
#print(random.random()) #取0-1之间随机小数
s = ['a','b','c','d','e']
random.shuffle(s) #洗牌,打乱顺序,只能传list
print(s)
加密模块
import hashlib
# md5
ybm_pwd='yuanbapqingsdfs234FF234HF@F' #
m = hashlib.md5() #
bytes_ybq = ybm_pwd.encode()#把字符串转成bytes类型
m.update(bytes_ybq) #加密,不能字符串,只能传bytes类型,二进制
# print(m.hexdigest()) #加密后的结果
def md5_password(st:str):#限定了入参的类型,只能为string类型
bytes_st = st.encode() #转成二进制类型
m = hashlib.md5(bytes_st) #加密
return m.hexdigest() #返回加密后的结果
#
# sha_256 =hashlib.sha256(bytes_ybq)
# sha512 =hashlib.sha512(bytes_ybq)
# print(sha512.hexdigest())
# print(dir(m))
#md5加密是不可逆的,不能被解密的。
# MD5 md5AF
# 123456 f0dfb4c958c67903e542e31c729c629b
#撞库
import base64
s='hahaha'
byte_s = s.encode() #字符串变成二进制
res = base64.b64encode(byte_s) #base64编码
print(res.decode()) #把bytes转成字符串。
jie_mi_res = base64.b64decode(res.decode()) #base64编码
print(jie_mi_res.decode())
时间模块
import time
# time.sleep(2) #等待几秒
# 一、格式化好的时间 2018-1-14 16:42
# 二、时间戳 是从unix元年到如今全部的秒数
# 三、时间元组
# 想时间戳和格式化好的时间互相转换的话,都要先转成时间元组,而后才能转
# print(int(time.time())) #当前时间戳
# cur_time = time.strftime('%Y-%m-%d %H:%M:%S')
# cur_time = time.strftime('%H%M%S') #取当前时间的格式化时间
# print(time.gmtime())#默认取标准时区的时间元组,若是传入了一个时间戳,那么就把这个时间戳转换成时间元组。
# print(time.timezone) #和标准时间相差了几个小时
# print(time.gmtime(1516005840)) #标准时区。
cur_time = time.localtime(1516005840) # 默认取当前时区的时间元组,若是传入了一个时间戳,那么就把这个时间戳转换成时间元组。
res = time.strftime('%Y-%m-%d %H:%M:%S', cur_time)
def timestampToStr(time_strmp, format='%Y%m%d%H%M%S'):
# 时间戳转格式化好的时间
cur_time = time.localtime(time_strmp) # 时间戳转成时间元组
res = time.strftime(format, cur_time) # 再把时间元组转成格式化好的时间
return res
def strToTimestamp(time_st, format='%Y%m%d%H%M%S'):
# 20181128113859
# 这个函数是格式化好的时间,转时间戳的
t = time.strptime(time_st, format) # 把格式化好的时间转成时间元组
res = time.mktime(t) # 时间元组转成时间戳
return res
# 86400 * 3
# 32342 - 86400 * 3
10.内置函数
print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真
print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真
print(bin(10))#十进制转二进制
print(bool('s'))#把一个对象转换成布尔类型
print(bytearray('abcde',encoding='utf-8'))#把字符串变成一个可修改的bytes
print(callable('aa'))#判断传入的对象是否可调用
print(chr(10))#打印数字对应的ascii
print(ord('b'))#打印字符串对应的ascii码
print(dict(a=1,b=2))#转换字典
print(dir(1))#打印传入对象的可调用方法
print(eval('[]'))#执行python代码,只能执行简单的,定义数据类型和运算
print(exec('def a():pass'))#执行python代码
print(filter(lambda x:x>5,[12,3,12,2,1,2,35]))#把后面的迭代对象根据前面的方法筛选
print(map(lambda x:x>5,[1,2,3,4,5,6]))
print(frozenset({1,2,3,3}))#定义一个不可修改的集合
print(globals())#返回程序内全部的变量,返回的是一个字典
print(locals())#返回局部变量
print(hash('aaa'))#把一个字符串哈希成一个数字
print(hex(111))#数字转成16进制
print(max(111,12))#取最大值
print(oct(111))#把数字转换成8进制
print(round(11.11,2))#取几位小数
print(sorted([2,31,34,6,1,23,4]))#排序
dic={1:2,3:4,5:6,7:8}
print(sorted(dic.items()))#按照字典的key排序
print(sorted(dic.items(),key=lambda x:x[1]))#按照字典的value排序
__import__('decorator')#导入一个模块
十一、常量 常量就是一个不会变的变量 常量名所有用大写字母 NAME = WANGYAN