Python总是从第一行代码开始逐步执行,而C是从main函数开始执行。
在Python中,一切东西都是对象。
在Python中,没有C的花括号,不能任意排版,属于同一个语句块的语句需要使用相同的对齐方式(前面的空格数应该一样)否则会报错。
固定的数据类型
str是一种类型,字符串类型,一个字符序列。在Python中,str和基本的数值类型(比如int)都是固定的,也就是一旦设定,其值便不能改变,虽然我们可以通过方括号取得序列中的数据项,但无法改变其中的字符。
在Python中,字符是指长度为1的字符串。
内置函数:
内置函数是Python语言内置的一部分,我们不需要从某个库文件中对其进行import,就可以直接引用该函数。
Python整数大小:
Python所表示的整数大小只受机器的内存大小的限制,而非固定的字节数。
字符串可以使用双引号或单引号封装,只要字符串头尾使用的符号相同或对称即可,Python字符串使用的是Unicode编码,所以字符串内容不局限于ASCII字符。
方括号:
Python使用[]提取字符串等任意序列中的某一项,从0开始。方括号存取使用与任意数据类型(只要构成一个序列)的数据项。
对象引用:
定义了数据类型之后,我们就可以定义存储某种数据类型的变量,但是在Python中没有这样的变量,而是使用“对象引用”。
x = "blue"
执行时,Python会先创建一个str对象(放在堆区),str对象存储的就是“blue”的这些字符,同时还创建了一个名为x的对象引用,x引用的就是str对象。
x=2
在C中,会开辟一段内存(占4个字节),里面存储着2这个数字,这段内存的引用名为x。
在Python中,会开辟两段内存,在堆上开辟的内存存储着2这个数字,是一个int对象,另一段开辟的内存存储着int对象的地址,该段内存的引用名为x。
操作符=:
在Python中,“=”的作用是将对象引用和内存中的某对象进行绑定。如果对象引用已经存在,那么就简单的进行重绑定,以便引用“=”操作符后面的对象。如果对象引用尚未存在,就由“=”操作符创建对象引用。
垃圾回收:
如果内存中的一个对象,没有任何一个对象引用引用此对象,那么这个无引用的对象,就由Python进行垃圾回收处理
动态类型机制:
Python使用的的是“动态类型”机制,即在任何时刻,只要需要,某个对象引用可以重新引用一个不同的对象;某个对象引用可以重新绑定到不同的数据类型的对象。
x="blue" #x对象引用引用的是str对象
x=1 #x对象引用重新与int对象进行绑定,同时str对象“blue”进入垃圾回收流程,因为没有对象引用再对其进行引用
如果某个类型的对象使用了不合法的操作符,就会导致产生了一个TypeError
type()函数会返回给定数据项的数据类型。
元组和列表:
列表有点像C中的数组,不过Python的组合数据类型支持一个组合数据类型中包含多种类型。
元组是固定的,创建后就不能改变;列表是可变的,在需要的时候可以插入或移除数据项;
元组使用逗号创建,x=1,2,3,"123"
在输出元组时,Python使用圆括号将其封装在一起,可以结合圆括号和逗号创建元组,x=(1,2,3,"123"),如果元组只有一个数据项,又需要圆括号,就需要在第一个数据项后面加上一个“多余”的逗号,如x=(1,)。这个逗号如果省略了,那么创建的只是一个普通的数据项,而不是一个元组对象。
空元组使用空的()创建。
逗号:
逗号有两个用处:1,分隔函数参数,2,分隔元组中数据项
由于函数参数和元组都是用圆括号封装,因此如果需要将元组常值作为参数传递,就必须使用圆括号对其进行封装,以免混淆。如:
func(1,2,(3,4)),第三个参数是元组,如果元组不加圆括号,则会发生混淆。
列表的创建使用方括号进行分封装,看来方括号不仅可以取序列中的某项数据项,还可以来定义列表。
元组和列表实质:
实质上元组和列表并不存储真正的数据项,而是存储对象引用,这样做会浪费一点空间。
x=1
y=2
z=3
a=[x,y,z]
创建列表或元组时,实际上是使用给定对象引用的副本而已。
b=[1,2,3]
这又和上面的创建方法不一样,这是在字面意义项(比如整数或字符串)的情况下,会在内存中创建一个适当数据类型的对象,而存放在列表或元组的才是对象引用。
组合数据类型也是一种对象的类:
因此可以将某种组合数据类型嵌套在其他组合数据类型中,比如创建一个列表,列表的数据项仍是列表。
元组,列表以及字符串等数据类型的长度——len()函数:
这长度对该数据类型是有意义的,将数据项作为参数传递给len()函数即可得到该数据项的长度。
数据项知道自己的类型!:
对象知道自己的数据类型,因此不需要明确指定数据类型,比如定义的时候
列表的扩建:
1,创建一个新的列表,再与新的列表对象的对象引用进行重新的绑定;2,使用对象自带的append方法,具有更高的效率,对于长列表更是如此。
方法调用:
1,x.append("more")
2,list.append(x,"more")
第一种形式在实际中应用得更加广泛;第二种指定了数据类型、该数据类型的方法,并将要调用该方法的数据项本身作为第一个参数,其后再跟随一些其他参数。(在继承方面,语义存在稍微差别)
点(存储属性)操作符:
用于存储某个对象的属性,属性不仅可以是方法,常量,也可以是任意类型的对象。由于属性可以是对象,该对象包含其他属性,这些属性又是对象,以此类推。
成员操作符in:
对于序列或集合这一数据类型,比如字符串、列表、元组,我们可以使用操作符in来测试成员关系,用not in测试非成员关系。
对于列表或元组,in使用的是线性搜索,对于较大的组合数据类型,速度可能会较慢;
对于字典或集合,in的速度可以非常快;
对于字符串数据类型,in可以很方便的测试任意长度的字符串。
逻辑运算符返回值:
and or not:and or使用的是短路逻辑,比如A and B,如果A为假,那么该表达式一定为假,B不会被计算;or也是如此;
上面的和C一样,但有一点最不一样的是,逻辑表达式的返回值:not返回的是True或False,而and or 返回的是决定结果的操作数,而不是布尔值(除非实际上是布尔操作数),比如 3 and 5表达式返回的是5.
a=1
a=a+1的过程分析:
第一条语句:a=1,Python会先创建一个存储1的int对象,这个对象存储在堆内,此时用户还无法使用它,Python再创建一个名字为a的对象引用指向堆内的对象,用户通过a便可以使用堆内的存储1的对象。
第二条语句:a=a+1,由于int类型是固定的,也就是a引用的对象一旦赋值就不能改变,因此对固定的对象使用增强的赋值操作符时,实际上是创建一个对象来存储结果,之后目标对象引用重新绑定,以便引用上面创建的结果对象,而不再引用以前的对象,以前的对象如果没有其他对象引用,便会进入垃圾回收流程。
a+=b和a=a+b的微妙差别:
前者只查询了一次a的值,因而速度更快,此外,如果a是一个复杂的表达式(有副作用的表达式),那么使用增强的赋值操作符较少出错。因为计算的过程,维护者只需要改变一次,而不是两次。
+=和序列:
在序列中,+=的右边必须是可迭代的操作数,否则会产生TypeError,比如 a+=[2]或a+=[2,3,4],而不是a+=2;
在字符串序列里,a+="ABC",和a+=["ABC"]是不一样的,如:
a=["A","BC"]
a+="ABC" #Python会迭代字符串序列的每个字母,最后结果是a为["A","BC","A","B","C"]
a+=["ABC"] #Python会迭代字符串列表的每一个数据项,最后结果是a为["A","BC","ABC"]
+=对于固定的数据类型和可变的数据类型:
对于固定的数据类型,使用增强的赋值操作符,会创建一个新的对象,并且表达式的左边的对象引用将重新绑定到新的对象;
对于可变的数据类型,原始的对象会被修改。
固定的数据类型和可变的数据类型:
性能差别,固定的数据类型具有比可变的数据类型更高的潜力;有些组合数据类型(比如集合)只能操纵固定的数据类型;这就是Python规定两种数据类型的原因。
函数库的导入顺序:
先导入Python的标准库模块,之后导入第三方库模块,最后才导入自己编写的模块。
本文链接:http://www.cnblogs.com/cposture/p/4514634.html
- 简学Python第一章__进入PY的世界
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- python第一章计算机基础
第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 / 显示器 等组成,只有硬件但硬件之间无法进行交流和通信. 1.2 操作系统 操作系统用 ...
- Python第一章-基础知识
第一章:基础知识 1.1 安装python. 直接官网下载最新的python然后默认安装就可以了,然后开始菜单里找到pyhton *.*.* Shell.exe运行python的交互shell ...
- python第一章:简介与安装--小白博客
Python简介 Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项 ...
- 学习python 第一章
目录 第一章... 1 1:新建项目... 1 2:修改默认模板... 3 3:什么是变量... 3 4:重指向... 3 5:常量的表示... 4 6:格式化输出(三种方法)... 4 7:打印一个 ...
- python第一章练习题
本章总节 练习题 1.简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释 编译型:把源代码编译成机器语言的可执行文件,程序执行的时候执行可执行文件即可. 优点:程序执行不 ...
- python:第一章
完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行. 代码少的代价是运行速度慢,C程序运行1秒钟,Java程序可能需要2秒,而Python程序可能就需要1 ...
- Python第一章概述与环境安装
Python简介 Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项 ...
- python第一章 python基础编程
第一次学习python 首先python对于我来说是我学习的第三门语言,之前大一学习过了c和c++这两门语言. 接触一个新语言,首先应该的是搭载一下编译的环境.我们是老师给我们上传了的python3安 ...
随机推荐
- python模块:csv
""" csv.py - read/write/investigate CSV files """ import re from _csv ...
- 为创世纪图书馆(Library Genesis)作镜像
简介 Library Genesis的Wikipedia条目中的介绍是: Library Genesis or LibGen is a search engine for articles and b ...
- Linux 解压/压缩xxx.zip格式(unZip Zip的安装和使用)
Linux系统没有自带的压缩解压工具:需要我们自己安装:当压缩包为.zip格式时,需要安装zip包 1.apt-get安装: apt-get install zip 2.yum安装: yum inst ...
- maven + eclipse + tomcat热部署 引自:http://jingpin.jikexueyuan.com/article/23068.html
方案二: 1.修改tomcat的server.xml配置文件,在host结点下添加如下代码 Xml代码 <Context docBase="F:\eclipse_workspace ...
- 对状压dp的一点理解
此dp可以理解为最暴力的dp,因为他需要遍历每个状态,所以将会出现2^n的情况数量,所以明显的标志就是数据不能太多(好像是<=15?),然后遍历所有状态的姿势就是用二进制来表示,01串,1表示 ...
- 一窍懂PID
这是学习PID时的理解,做个笔记! 一:首选,说一下一些基本概念,为了更好理解. PID:就是对输入偏差进行比例积分微分运算,运算的叠加结果去控制执行机构. P(proportion):比例,就是对输 ...
- MySQL基础操作1
1.进入MySQL的两种方式: (1).MySQL自带的控制台 直接输入密码 (2).命令提示符: mysql -uroot -proot 然后再输入密码 MySQL常用指令 ------- 1.启动 ...
- prim最小生成树
prim和DIjkstra相似,都使用了贪心策略,加一些限制条件. prim每次会找出尽量小的那个边,将其加入到树中,最终使得生成树长大. 树中有n-1个节点时或者剩下的所有边都是INF,算法结束. ...
- BCrypt加密算法
用户表的密码通常使用MD5等不可逆算法加密后存储,为防止彩虹表破解更会先使用一个特定的字符串(如域名)加密,然后再使用一个随机的salt(盐值)加密. 特定字符串是程序代码中固定的,salt是每个密码 ...
- 1分钟快速制作漂亮的H5本地记事本
大家好,以前给大家分享过一个五步骤制作精美的HTML5时钟的文章,点击回顾<五步教你制作漂亮精致的HTML时钟>,还有<一分钟教你如何实现唯美的文字描边>:今天给大家分享一个用 ...