python学习之路day02

一、.pyc是什么?

1. Python是一门解释型语言?

我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在。如果是解释型语言,那么生成的*.pyc文件是什么呢?c应该是compiled的缩写才对啊!

为了防止其他学习Python的人也被这句话误解,那么我们就在文中来澄清下这个问题,并且把一些基础概念给理清。

2. 解释型语言和编译型语言 

计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。

编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。

解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby。

通过以上的例子,我们可以来总结一下解释型语言和编译型语言的优缺点,因为编译型语言在程序运行之前就已经对程序做出了“翻译”,所以在运行时就少掉了“翻译”的过程,所以效率比较高。但是我们也不能一概而论,一些解释型语言也可以通过解释器的优化来在对程序做出翻译时对整个程序做出优化,从而在效率上超过编译型语言。

此外,随着Java等基于虚拟机的语言的兴起,我们又不能把语言纯粹地分成解释型和编译型这两种。

用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。

3. Python到底是什么 

其实Python和Java/C#一样,也是一门基于虚拟机的语言,我们先来从表面上简单地了解一下Python程序的运行过程吧。

当我们在命令行中输入python hello.py时,其实是激活了Python的“解释器”,告诉“解释器”:你要开始工作了。可是在“解释”之前,其实执行的第一项工作和Java一样,是编译。

熟悉Java的同学可以想一下我们在命令行中如何执行一个Java的程序:

javac hello.java

java hello

只是我们在用Eclipse之类的IDE时,将这两部给融合成了一部而已。其实Python也一样,当我们执行python hello.py时,他也一样执行了这么一个过程,所以我们应该这样来描述Python,Python是一门先编译后解释的语言。

4. 简述Python的运行过程

在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。

我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

所以我们应该这样来定位PyCodeObject和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
2、布尔值
真或假
1 或 0
3、字符串
"hello world"
万恶的字符串拼接:
python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
三、数据运算
算数运算:

比较运算:

赋值运算:

逻辑运算:

成员运算:

身份运算:

位运算:

运算符优先级:

更多内容:猛击这里

四、encode与decode

 

五、列表的操作;[]

names=["!@zhangyang","45guyun","chenronghua","xiangpeng","Niexiaomin","Xuliangchen"]

print(names[0],(names[2]))
print(names[1:3])
print(names[-1])
names.append("yanbing")
names.insert(2,"wuxiansen")
names[-1]="Niexiaomin"
# names.remove("niexiaomin") #移除值
# del names[0] #删除指定的值
# names.pop() #删除最后一个值
print(names.count("niexiaomin"))
# print(names[3:-1])
# print(names[0::3])
# names2=[1,3,5,7,9]
# names.extend(names2) #列表的扩展
# names.reverse()
names.sort() #排序,sort中不支持单数字与字符类型排序
names_copy=names.copy()
print(names_copy)
print(names.index("Niexiaomin"))
print(names)
六、元组的操作:()
import copy
names=["!@zhangyang","45guyun","chenronghua",["alex","jack"],"xiangpeng","Niexiaomin","Xuliangchen"]

print(names[1:10:2])
for i in names:
print(i)

name1=copy.deepcopy(names) #深copy,导入copy
name2=copy.copy(names) #浅copy,导入copy
#name1=copy.deepcopy(names)
names2=names.copy()
names[2]="XIEDI"
names[3][0]="ALEXANDER"
print(names)
print(names2)

七、程序练习 

请闭眼写出以下程序。

程序:购物车程序

需求:

  1. 启动程序后,让用户输入工资,然后打印商品列表
  2. 允许用户根据商品编号购买商品
  3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 
  4. 可随时退出,退出时,打印已购买商品和余额
  5. 备注:index 打印下标;enumerate 打印下标
八、字符串操作
name.capitalize()  首字母大写
name.casefold()   大写全部变小写
name.center(50,"-")  输出 '---------------------Alex Li----------------------'
name.count('lex') 统计 lex出现次数
name.encode()  将字符串编码成bytes格式
name.endswith("Li")  判断字符串是否以 Li结尾"Alex\tLi".expandtabs(10) 输出'Alex      Li', 将\t转换成多长的空格 name.find('A')  查找A,找到返回其索引, 找不到返回-1 

九、字典操作info = {
    'stu1101': "TengLan Wu",
'stu1102': "LongZe Luola",
'stu1103': "XiaoZe Maliya",
}

info['stu1104']="苍井空" #增
del info["stu1101"] #删除
info["stu1101"]="武藤兰" #修改
c=info.get("stu1103") #查
print(c)
print("stu1102" in info)
info.pop("stu1104")
info.popitem()

print(info.values())
print(info.keys())
print(info.setdefault("stu1101","wuteng lan"))
#print(info)

for key in info:
print(key,info[key])
for k,v in info.items():
print(k,v)
十、三级菜单作业



转载于:https://www.cnblogs.com/0818and0119/p/9919113.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

像人一样自然流畅地说话,下一代智能对话系统还有多长的路要走?

来源:机器之心机器之心编辑部作为人工智能的一个子领域,自然语言处理(NLP)指的是机器理解并解释人类书面语和口语的能力,目的在于使计算机像人类一样智能地理解语言和用语言表达,弥补人类交流(自…

机器学习:简单的随机梯度下降(SGD)求解回归问题和用逻辑回归(LR)解决分类问题

20210405作业: 回归问题: 用随机梯度下降法实现,数据用data.csv。分类问题: 用梯度下降实现逻辑回归,可以用批量梯度也可以用随机梯度实现。数据采用西瓜数据3.0α.csv。 1. SGD (Stochastic gradient descent) # 导包 import numpy as np i…

Nature『大脑废物清除系统』已上线,从“痴呆”变聪明或成可能

来源:生物通 利用早发性阿尔茨海默氏症的小鼠模型,研究人员移除了一组小鼠大脑中的一些淋巴管。他们给这些小鼠以及对照组注射了单克隆抗体疗法,包括小鼠版本的Aducanumab。对小鼠大脑的研究显示,脑膜淋巴系统(紫色和粉红色)可以…

Unity3D_(API)Quaternion四元数中的Quaternion.LookRotation()

四元数百度百科:  传送门 四元数官方文档:  传送门 欧拉旋转、四元数、矩阵旋转之间的差异:  传送门 四元数转换为欧拉角eulerAngles  官方文档:  传送门 欧拉角转换为四元数Euler  官方文档:  传送门 Q…

思考:那么些大学生仅凭个人好恶来判断,缺乏是非观

“一切仅凭自己的好恶来判断,是缺乏是非观的体现” 今读某大学Z教授(一位授课严谨认真的老师,在我心中,至少我是这样认为的)的推文,深受触动。文章小中见大,批判了精致的利己主义思想&#xff0…

工业互联网的十大关键传感器

来源:传感器专家网工业互联网(Industrial Internet)是制造业一大热潮。从早期GE提出工业互联网理念被不少人解读为美国的制造业复兴战略,到GE的Predix平台受到热捧,再到西门子推出工业互联网平台Mindsphere,及多家本土的制造业巨头…

抽奖系统的流量削峰方案

如果观看抽奖或秒杀系统的请求监控曲线,你就会发现这类系统在活动开放的时间段内会出现一个波峰,而在活动未开放时,系统的请求量、机器负载一般都是比较平稳的。为了节省机器资源,我们不可能时时都提供最大化的资源能力来支持短时…

SVM支持向量机-手写笔记(超详细:拉格朗日乘数法、KKT条件、对偶性质、最优化、合页损失、核函数...)

SVM支持向量机-手写笔记 作者:某丁 日期:2021.05.21 写完了,发现想要真正理解SVM还需要继续深入学习,以上所写只不过是冰山一角,我的管中窥豹而已。 参考 [1] 一文搞懂支持向量机(SVM)算法 https://zhuanlan.zhihu.co…

扛鼎之作!Twitter 图机器学习大牛发表160页论文:以几何学视角统一深度学习

来源:AI科技评论作者:Michael Bronstein编译:Mr Bear、青暮导语:近日,帝国理工学院教授、Twitter 首席科学家 Michael Bronstein 发表了一篇长达160页的论文(或者说书籍),试图从对称…

情感数据对LSTM股票预测模型的影响研究

情感数据对LSTM股票预测模型的影响研究 作者:丁纪翔 发布时间:06/28/2021 摘要:探究了情感结构化特征数据在LSTM股票预测模型中的影响。利用Pandas对所给数据进行预处理(数据载入、清洗与准备、规整、时间序列处理、数据聚合等&am…

AI芯片发展现状及前景分析

来源:专知1. AI芯片定义及技术架构1.1 AI芯片定义广义上所有面向AI应用的芯片都可以称为AI芯片。目前一般认为是针对AI算法做了特殊加速设计的芯片。现阶段,这些人工智能算法一般以深度学习算法为主,也可以包括其他浅层机器学习算法[7-8]。1.…

Tableau数据分析:NC Retail Order Data(英)Data Science Program Lab#1(GTI)

Tableau数据分析:NC Retail Order Data(英) NCSU 2021 Summer Online Data Science Author:©Sylvan Ding

解读:欧盟委员会2021年《人工智能法》提案

来源:图灵人工智能文:吴沈括(北京师范大学网络法治国际中心执行主任、博导中国互联网协会研究中心副主任)文:胡然(北京师范大学网络法治国际中心研究助理)2021年4月21日,为了将欧洲变…

《2021人脸识别行业白皮书》发布 拥挤安防还有多少空间?

来源:帮尼资讯图片来源:网络人脸识别在内的人工智能技术需求较大,这对传统安防产业带来了巨大的冲击和变革。近日,智慧芽联合罗思咨询,共同发布《2021人脸识别行业白皮书》。白皮书从人脸识别行业现状、企业聚焦和技术…

第一章 计算机系统概述 1.1 计算机发展史 [计算机组成原理笔记]

第一章 计算机系统概述 1.1 计算机发展史 本笔记参考书目: 计算机组成原理(第六版.立体化教材)白中英、戴志涛2021王道计算机组成原理视频公开课 本节重点: 计算机硬件的发展史 转载请注明文章来源! 什么是计算机系…

我国工业互联网 技术路线与发展趋势研究

来源:中国工业和信息化本文发表于《中国工业和信息化》杂志2021年4月刊总第33期作者:许雪荷 中国工业互联网研究院自2017年《国务院关于深化“互联网先进制造业”发展工业互联网的指导意见》发布以来,国家高度重视工业互联网创新发展&#…

【创新应用】小图像,大图景:AI彻底改变了显微镜技术

来源:智能研究院20 年前,计算机生物学家 Anne Carpenter 在读博士时第一次意识到她需要学习计算机编程。Carpenter 说:「在麻省理工学院和哈佛大学的博德研究所 (Broad Institute of MIT and Harvard in Cambridge) 管理实验室的时候。她记得…

历史上12篇最著名的博士论文欣赏

来源 : 学位与写作Ali Gajani在mrgreek网站分享了12篇著名学者的博士论文,分别是居里夫人的博士论文、香浓的博士论文、纳什的博士论文、德布罗意的博士论文、费曼的博士论文、爱因斯坦的博士论文、马克思的博士论文、韦伯的博士论文、萨特兰的博士论文、…

Exalogic硬件架构

1、硬件配置见如下图表。 组件名称满配半配1/4配1/8配Sun Rack II 12421111计算节点 X2-2、X3-2、X4-2、X5-2、X6-2301684存储设备 X2-2和X3-2: Dual controller Sun ZFS Storage 7320 appliance (60 TB) X4-2和X5-2: Oracle ZS3-ES storage appliance X6-2: Oracle ZS5–ES st…