设为首页 收藏本站
查看: 732|回复: 0

[经验分享] python之路,Python基础篇2(第二周)

[复制链接]

尚未签到

发表于 2018-8-11 08:05:28 | 显示全部楼层 |阅读模式
一、.pyc是个什么鬼:  pyc文件其实是PyCodeObject的一种持久化保存方式。
  

  
二、数据类型
  

  
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
  
long(长整型)
  
  跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
  
  注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
  
float(浮点型)
  
  浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
  
complex(复数)
  
  复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
  
注:Python中存在小数字池:-5 ~ 257
  

  

  
#复数,生产环境用得比较少。
  
python 2.7 有整型和长整型之分:
  

  >>> (2) -1
  1
  >>> (2**31) -1
  2147483647L
  >>>
  

  >>> type( (2**30) -1)
  <type 'int'>
  >>> type( (2**31) -1)
  <type 'long'>
  >>>
  

  
python 3.x 没有整型和长整型之分:
  

  >>> type( (2**30) -1)
  <class 'int'>
  >>> type( (2**31) -1)
  <class 'int'>
  >>>
  

  
2、布尔值
  

  真或假
  1 或 0
  >>> 1 is True
  False
  >>> 0 is False
  False
  >>> 0 is True
  False
  

  
3、字符串
  

  "hello world"
  

  万恶的字符串拼接:
  python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
  

  >>> name = 'luchuan'
  >>> print("my name is " + name + " and you ? ")
  my name is luchuan and you ?
  >>>
  

  
#这等于三块内存空间
  

  
字符串格式化输出
  

  name = "luchuan"
  print "i am %s " % name
  

  
#输出: i am luchuan
  

  
PS: 字符串是 %s;整数 %d;浮点数%f
  

  
字符串常用功能:
  移除空白
  分割
  长度
  索引
  切片
  

  
1)strip 移除空白
  username = input("user:")
  if username.strip() == 'alex':
  print("welcome")
  

  
2)split 分割
  name = "alex,jack,rain"
  name2 = name.split(",")
  print(name2)
  

  
3)join 字符串合起来
  name = "alex,jack,rain"
  name2 = name.split(",")
  print("|".join(name2))
  

  
4)‘’ in name 判断有没有空格
  name="alex li"
  print('' in name)
  

  
5)capitalize 首字母大写
  name="alex li"
  print(name.capitalize())
  

  
6)format 格式化
  msg = "Hello, {name}, it's been a long {age} since last time sopke..."
  msg2 = msg.format(name='xiaoming',age=33)
  print(msg2)
  

  msg2 = "haha{0}, dddd{1}"
  print(msg2.format('Alex',33))
  

  
7)center 居中
  name="alex li"
  print(name.center(40,'-'))
  

  
8)find 查找
  name = 'alex3sdf'
  print(name.find('a'))
  

  
9)isdigit是否是数字
  age = input("your age:")
  if age.isdigit():
  age = int(age)
  print(age)
  else:
  print("invalid data type")
  
10)isalnum 是否只包含字母数字字符
  name = 'alex3sdf'
  print(name.isalnum())
  

  
11)endswith 什么时候结尾
  name = 'alex3sdf'
  print(name.endswith('df'))
  

  
12)startswith 什么时候开始
  name = 'alex3sdf'
  print(name.startswith('df'))
  

  
13)upper 大写
  name = 'alex3sdf'
  print(name.upper())
  

  
14)lower 小写
  name = 'alex3sdf'
  print(name.upper().lower())
  
15)len 长度
  print(len(name))
  

  
4、列表
  
python包含6种内建的序列:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。
  
列表只有在Python中叫列表,在其他语言中叫数组。
  
索引是访问单个元素,分片操作是访问一定范围内的元素
  

  
创建列表:
  

  name_list = ['alex', 'seven', 'eric']
  或
  name_list = list(['alex', 'seven', 'eric'])
  

  
基本操作:
  

  
索引
  
切片
  
追加
  
删除
  
长度
  
循环
  
包含
  

  

  
name = ['Alex', 'jack', 'Rain', 'Eric', 'Monica', 'Fiona']
  
>>> name[:]
  
['Alex', 'jack', 'Rain', 'Eric', 'Monica', 'Fiona']
  

  

  
索引
  
>>> name[2]
  
'Rain'
  

  
切片
  
>>> name[2:4]
  
['Rain', 'Eric']
  
>>> name[2:4][0]
  
'Rain'
  
>>> name[2:4][0][1:2]
  
'a'
  

  
修改:
  
>>> name[1]="xiaoming"
  
>>> name
  
['Alex', 'xiaoming', 'Rain', 'Eric', 'Monica', 'Fiona']
  

  
插入:
  
>>> name.insert(2,'daming')
  
>>> name
  
['Alex', 'xiaoming', 'daming', 'Rain', 'Eric', 'Monica', 'Fiona']
  

  
追加:
  
>>> name.append('alex')
  
>>> name
  
['Alex', 'xiaoming', 'daming', 'Rain', 'Eric', 'Monica', 'Fiona', 'alex']
  

  
删除:
  
>>> name.remove("daming")
  
>>> name
  
['Alex', 'xiaoming', 'Rain', 'Eric', 'Monica', 'Fiona', 'alex']
  

  
练习:
  
往中间插入两个临组成员的名字
  
取出第3-8的人列表
  
删除第9个人
  
把刚才加入的那2个其他组的人一次性删除
  
把组长的名字加上组长备注
  
要求你隔一个人打印一个人
  

  
>>> name = ['Alex', 'xiaoming', 'Rain', 'Eric', 'Monica', 'Fiona']
  

  
>>> name.insert(-1,"xiaochuan")
  
>>> name.insert(5,"dachuan")
  

  
>>> name[3:8]
  
['Eric', 'Monica', 'dachuan', 'xiaochuan', 'Fiona']
  

  
>>> name.remove("Fiona")
  
>>> name
  
['Alex', 'xiaoming', 'Rain', 'Eric', 'Monica', 'dachuan', 'Fiona']
  

  
>>> del name[4:6]
  

  
>>> print(name[::2])
  

  
长度:
  
>>> len(name)
  
7
  
>>> name
  
['Alex', 'xiaoming', 'Rain', 'Eric', 'Monica', 'Fiona', 'alex']
  

  
5、元组(不可变列表)
  创建元组:
  

  ages = (11, 22, 33, 44, 55)
  或
  ages = tuple((11, 22, 33, 44, 55))
  

  
6、字典(无序)
  创建字典:
  person = {"name": "mr.wu", 'age': 18}
  或
  person = dict({"name": "mr.wu", 'age': 18})
  

  
常用操作:
  

  
索引
  
新增
  
删除
  
键、值、键值对
  
循环
  
长度
  

  
为什么要有字典呢?是因为序列的不足。
  
字典:
  1、查看
  2、修改:
  3、添加:
  4、删除:
  5、获取:
  6、update更新:
  7、items:
  8、values:
  9、keys:
  10、has_key:
  11、setdefault:
  12、fromkeys:
  13、popitem:
  
id_db = {
  
    371471199306143632:{
  
        'name':"Alex Li",
  
        'age':22,
  
        'addr':'ShanDong'
  
    },
  
    22043549306143632:{
  
        'name':"ShanPao",
  
        'age':24,
  
        'addr':'DongBei'
  
    }
  
}
  

  
查看:
  
print(id_db[22043549306143632])
  

  
修改:
  
print(id_db[22043549306143632])
  
id_db[22043549306143632]['name']="xiaoming"
  
print(id_db[22043549306143632])
  

  
添加:
  
print(id_db[22043549306143632])
  
id_db[22043549306143632]['name']="xiaoming"
  
id_db[22043549306143632]['qq_of_wife']=38232354
  
print(id_db[22043549306143632])
  

  
删除:
  
print(id_db[22043549306143632])
  
id_db[22043549306143632]['name']="xiaoming"
  
id_db[22043549306143632]['qq_of_wife']=38232354
  
del id_db[22043549306143632]['addr']
  
print(id_db[22043549306143632])
  

  
print(id_db[22043549306143632])
  
id_db[22043549306143632]['name']="xiaoming"
  
id_db[22043549306143632]['qq_of_wife']=38232354
  
id_db[22043549306143632].pop("addr")
  
print(id_db[22043549306143632])
  

  
获取:
  
v = id_db.get(22043549306143632)
  
print(v)
  

  如果没有这个值,返回none:
  v = id_db.get(22343549306143632)
  print(v)
  None
  这样取值会报错:
  v = id_db[22343549306143632]
  print(v)
  

  

  
update更新:
  
id_db = {
  
    371471199306143632:{
  
        'name':"Alex Li",
  
        'age':22,
  
        'addr':'ShanDong'
  
    },
  
    22043549306143632:{
  
        'name':"ShanPao",
  
        'age':24,
  
        'addr':'DongBei'
  
    }
  
}
  

  
dic2 = {
  
    'name':'dssfdsfsf',
  
    220435493061436532: {
  
        'name':"DaShanPao",
  
        'age':24,
  
        'addr':'DongBei'
  
    }
  
}
  

  
id_db.update(dic2)
  
print(id_db)
  

  
items:
  
把字典变成列表,数据量大得情况下,尽量不要使用。
  
print(id_db)
  
print(id_db.items())
  

  
values:
  
打印字典里所有的values
  
print(id_db)
  
#print(id_db.items())
  
print(id_db.values())
  

  
keys:
  
打印字典里所有的keys:
  
print(id_db.keys())
  

  
has_key:
  
id_db.has_key(371471199306143632) #only in 2.x
  
371471199306143632 in id_db # equals to above has key(x)
  

  
setdefault:
  
如果有那个值,就取出,没有就在后面赋值:
  
print(id_db.setdefault(371471199306143632),"hahha")
  
print(id_db)
  

  
fromkeys:这是个坑,有问题再问。
  
print(id_db.fromkeys([1,2,34,4,5,6],'ddd'))
  

  
popitem:随机删除一个key,不要使用:
  
print(id_db.popitem())
  
print(id_db)
  

  
循环一个字典:
  
#for k,v in id.items(): #效率低,因为要有一个dict to list 的转换过程
  
#print(k,v)
  
for key in id_db:
  print(key,id_db[key])
  

  
三、数据运算
  

  计算机中能表示的最小单位,是一个二进制位。
  计算机中能存储的最小单位,是一个二进制位(bit)。
  8bit = byte(字节)
  1024byte = 1kbyte
  1024kbyte = 1mbyte
  1024mb = 1gb
  1024gb = 1T
  

  
算数运算:
  
比较运算:
  
赋值运算:
  
逻辑运算:
  
成员运算:
  
身份运算:
  
位运算:

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-549880-1-1.html 上篇帖子: 【Python基础】06、Python函数 下篇帖子: python 中的一些特殊语法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表