模块初识
模块的概念
建立文件
login.py
def fun(self): print('login success')
再建立一个index.py文件导入login
import login login.fun()
模块也称库 :python 有标准库和第3方库
a:标准库 standard library
b:开源模块 Open source module
C:自定义模块 Custom module
标准库举例:
import os # cmd_res =os.system("dir") cmd_res =os.popen("dir").read() print('-->',cmd_res)
import sys for i in range(len(sys.path)): print(sys.path[i])
pyc文件
解释型语言中间文件
Python数据类型
目录:
1、数字 2、布尔值 3、字符串 4、列表 5、元组 6、字典
1、数字
2 是一个整数的例子。
长整数 不过是大一些的整数。
3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是复数的例子,其中-5,4为实数,j为虚数,数学中表示复数是什么?。
int(整型)
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点型)
先扫盲 http://www.cnblogs.com/alex3714/articles/5895848.html
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注:Python中存在小数字池:-5 ~ 257
2、布尔值
真或假
1 或 0
3、字符串
万恶的字符串拼接:
python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
name = "万山" print("I am %s " % name)
PS: 字符串是 %s;整数 %d;浮点数%f
字符串常用功能:
- 移除空白
- 分割
- 长度
- 索引
- 切片
字符串的各种方法:
# Author zxm name = "万山" print("I am %s " % name) name_list = ['万山', '不止', '心中'] name_list1 =list(['万山', '不止', '心中']) ages = (11, 22, 33, 44, 55) ages1 = tuple((11, 22, 33, 44, 55)) person = {"name": "mr.wan", 'age': 18} person1 = dict({"name": "mr.wan", 'age': 18}) # name = "万山" name1='nigulasi \t zhaosi' print(name1.capitalize()) print(name1.count('s')) print(name1.count('n')) print(name1.center(20,"-")) print(name1.endswith("si")) print(name1.expandtabs(tabsize=30)) print(name1[name.find("si")]) print('ab123'.isalnum()) print('abA'.isalpha()) print('1A'.isdigit()) print('1A'.isdecimal()) print('1A'.isidentifier()) #判断是不是一个合法标识符 print('my name is'.istitle()) print('my name is'.isprintable()) print('my name is '.isupper()) print('name'.join('====')) print('+'.join(['1','2','3'])) print(name1.ljust(50,'*')) print(name1.rjust(50,'*')) print('Nigu'.lower()) print('Nigu'.upper()) print('\nNigu'.lstrip()) # 去左边的空格和回车 print('----') print('\nNigu') print('----') kong =str.maketrans("色",'空') print('色色色色 四大皆色'.translate(kong)) print('色色色色 四大皆色'.replace('色','空')) print('色色色色 四大皆色'.replace('色','空',3)) print('色色色色 四大皆色'.rfind('四')) print('1+2+3+4'.split('+')) print('1+2\n+3+4'.splitlines()) print('Nigu'.swapcase())
输出结果:
I am 万山 Nigulasi zhaosi 2 1 -nigulasi zhaosi-- True nigulasi zhaosi i True True False False False False True False =name=name=name= 1+2+3 nigulasi zhaosi********************************* *********************************nigulasi zhaosi nigu NIGU Nigu ---- Nigu ---- 空空空空 四大皆空 空空空空 四大皆空 空空空色 四大皆色 5 ['1', '2', '3', '4'] ['1+2', '+3+4'] nIGU Process finished with exit code 0
4、列表
创建列表:
name_list = ['万山', '不止', '心中'] name_list1 =list(['万山', '不止', '心中'])
基本操作:
- 索引
- 切片
- 追加
- 删除
- 长度
- 切片
- 循环
- 包含
names =['万','山','千','水'] names2 =names.copy() print(names) print(names2) names[1]='土' for i in names: print(i) #切片 #从0开始到最后(-1),步长为2 print(names[0:-1:2]) print(names[1:3]) print(names[0:4]) print(names[0:-1]) print(names[0:])#切边 取出所有值 print(names[-1]) print(names[1]) names.append('金') print(names) names.insert(2,'火') #在索引2的位置插入值 “火” print(names) #删除 names.remove('水') print(names) del names[3] #删除索引3的值 print(names) names.pop() #删除最后一个 print(names) #查 print(names.index('火')) print(names.count('万')) names.clear() print(names) names3 =['万','山','千','水','aaa','bac','cab'] names3.reverse() print(names3) #反转 names2.sort() print(names3) names4=[1,2,3,4] names4.extend(names3) print(names4) #以上列表 #以下元组 names6=('万山','千') # names6.append('水') print(names6)
5、元组(不可变列表)
创建元组:
ages = (11, 22, 33, 44, 55)
ages1 = tuple((11, 22, 33, 44, 55))
6、字典(无序)
创建字典:
person = {"name": "mr.wan", 'age': 18}
person1 = dict({"name": "mr.wan", 'age': 18})
常用操作:
- 索引
- 新增
- 删除
- 键、值、键值对
- 循环
- 长度
一、bytes类型
二、三元运算
result = 值1 if 条件 else 值2
如果条件为真:result = 值1
如果条件为假:result = 值2
三、进制
二进制,01
八进制,01234567
十进制,0123456789
十六进制,0123456789ABCDEF 二进制到16进制转换http://jingyan.baidu.com/album/47a29f24292608c0142399cb.html?picindex=1
四、一切皆对象
对于Python,一切事物都是对象,对象基于类创建
编码

msg='千山万水总是情!' print(msg) print(msg.encode("utf-8")) print(msg.encode("GBK")) print(msg.encode("GB2312")) print(msg.encode("GB18030")) print(msg.encode().decode())
实例项目一:3级菜单
data = { '北京':{ "昌平":{ "沙河":["oldboy","test"], "天通苑":["链家地产","我爱我家"] }, "朝阳":{ "望京":["奔驰","陌陌"], "国贸":{"CICC","HP"}, "东直门":{"Advent","飞信"}, }, "海淀":{}, }, '山东':{ "德州":{}, "青岛":{}, "济南":{} }, '广东':{ "东莞":{}, "常熟":{}, "佛山":{}, }, } exit_flag = False while not exit_flag: for i in data: print(i) choice = input("选择进入1>>:") if choice in data: while not exit_flag: for i2 in data[choice]: print("\t",i2) choice2 = input("选择进入2>>:") if choice2 in data[choice]: while not exit_flag: for i3 in data[choice][choice2]: print("\t\t", i3) choice3 = input("选择进入3>>:") if choice3 in data[choice][choice2]: for i4 in data[choice][choice2][choice3]: print("\t\t",i4) choice4 = input("最后一层,按b返回>>:") if choice4 == "b": pass elif choice4 == "q": exit_flag = True if choice3 == "b": break elif choice3 == "q": exit_flag = True if choice2 == "b": break elif choice2 == "q": exit_flag = True
实例项目二:购物车
wages=int(input("请输入你钱包的钱:"))#总钱数建议20元 commodity=(["王老吉",5],["娃哈哈",2],["阔落",3]) dic={} for x in range(0,commodity.__len__()): print("编号:{0} 商品名:{1} 价格:{2}".format(x+1,commodity[x][0],commodity[x][1])) while True: num = int(input("请输入商品编号或者退出(0)")) if num > commodity.__len__() or num < 0: # 不存在商品 print("商品不存在!") continue elif num==0 :#可随时退出,退出时,打印已购买商品和余额 print("购物车") payTotal=0 for k,v in dic.items(): print("{0} 单价:{1} 数量{2} 总价{3}".format(k,v[1],v[0],v[1]*v[0])) payTotal+=v[1]*v[0] print("结账:{0} 元,余额:{1}元".format(payTotal,wages)) print("购物结束,欢迎下次光临!") break else: # 存在商品 if wages >= commodity[num-1][1]: # 检测余额是否够,够就直接扣款,不够就提醒 wages -= commodity[num-1][1] if commodity[num-1][0] in dic.keys(): dic[commodity[num - 1][0]] = [dic[commodity[num - 1][0]][0]+1, commodity[num - 1][1]] else: dic[commodity[num-1][0]]=[1,commodity[num - 1][1]] print("{0}:{1}元,余额:{2}元".format(commodity[num - 1][0], commodity[num - 1][1], wages)) else: print("余额不足!")