python中的对象和类型
在python中,认为系统中的每一个“东西”都是一个对象,在python中,“对象”有着特殊的意义,python中的对象有:
一个标识

一些属性
零个或多个名称

当python创建对象时,它接收到一个标识号,可以使用id函数,查找它的ID号,python用这个数字将一个对象和其他对象区分开。除了ID号,对象还有一个或者多个名字,名字不是对象ID的一部分,使用名字是为了提高对象的可读性。python使用命名空间(每当创建新变量时,它被放入列表中,并与一个值关联。如果表中已经存在相同的变量名,则更新与它关联的值)来关联名字。最后每个对象有与之相关联的属性。属性本质上是一些关于对象的信息。

aInt=7
id(aInt)
type(aInt)

bFloat=2.5
id(bFloat)
type(bFloat)

aInt=bFloat
type(aInt) ---aInt is now of type float
id(aInt)
---aInt’s now has the same ID as bFloat

会发现对象的类型与名字无关,相反它只指定与它相关联的对象,aInt=bFloat将这两个名称关联到同一个对象上。

-----------------------------------------
数字:

整数:不同的前缀代表不同的进制,例如0代表8进制,0x代表16进制

浮点数(加上前缀例如0是没有意义的):浮点数是一个近似值,不是精确值,对浮点数进行运算所得到的结果也是近似值。整数是精确值,整数运算得到的也是精确值。

集合:set([1,2,3])

由于类型信息不实变量的一部分,在变量名字前面加上类型作为前缀,对于跟踪类型是有用的,例如intVar,myInt

每种类型都有相关联的构造函数,构造函数的名称就是类型名称(int,float,str…)。新航道雅思培训如果圆括号内没有给出值,则为该类型的默认值(str的默认值是‘
’),如果构造函数的括号中出现新的值,就将这个值转为指定类型的新对象(原对象本身不受影响,进行转换后返回新的对象)。

任何时候输入“help(对象名)”,Python将提供该对象的帮助信息

###两种相等
python中:
==检查两个名称引用的对象是否具有相同的值

is检查两个名字是否引用同一个对象(具有相同的ID,通过id即可获取ID信息)

多重赋值,交换两个变量的值:
aInt,bInt=bInt,aInt

python中的缩进,因为缩进代表代码的结构。常见的方式是使用4个空格,这与缩进等价。需要注意的是不要混淆制表符和空格,在python中请使用空格。

while与break,continue的结合:使用break是为了跳出while循环体,使用continue是为了跳过while循环体剩下的部门,直接进行下一次循环的判断

--------------------
常见函数:
raw_input():输入,返回的是一个字符串类型

random模块中的random.randint(0,100)随机数函数,生成0到100的一个随机数

range函数,生成数字序列(集合),range(start,end,stepLength)

例子:

------------------------------------------

-----------字符串----------------------------

(1)

字符串类型是python提供的数据集类型之一,数据集类型是由一组python对象构成的单个对象。

一种构造方式是通过字符串构造函数str,另一种方式是通过两个单引号‘’或两个双引号“”

三重引号字符串:如果字符串跨行,行与行之间的回车符也将被保存下来。采用三重引号字符串会将整个段落作为单个字符串进行处理,包含段落中的格式信息。

longStr2=“when you’re chewing on life’s gristle
Don’t grumble, give a
whistle”
print longStr2
上述就将报错,因为“”不具有跨行保存的功能

制表符 \t
回车符 \n

(2)
字符序列
字符串对象定义为字符序列,字符在字符串中的问题称为索引,python用[]表示索引运算符

如果想从末端建立索引,从-1开始计数,例如-1表示字符串最后一个字符,-2表示字符串倒数第二个字符
索引与分片

Str[start,end]:会截取字符串Str的第start个位置到第end-1个位置的元素(左开右闭区间)

helloString[6 :]:表示第六个到末尾
helloString[: 5]:表示起点到第4个

例子:

(3)字符串的格式化打印

(4)迭代器
由于经常要检查索引和字符,因此python提供了enumerate迭代器,实现查找字符对应的索引和字符本身的功能

将两个值放在一个元组中:

(5)处理字符串
在空格处分割方法的调用:split(” “)
在每一个逗号处分割的方法调用:split(“,”)

默认采用空格进行分割,所依一般都使用不带参数的split方法

记住,字符串是不可改变的,所以不能从字面上删除原始字符串的任何部分,托福考多少分相反,split只产生部分副本。

结果:

从上面可以观察看出,split方法将一个字符串变为一个序列进行输出,而不再是字符串

回文:

回文串的特点是前向读取和后向读取得到相同的内容

例子:

------------------------------------------------

-------------------函数---------------------------

函数定义由关键字def开始。Python中函数定义的方式类似于赋值语句。执行def语句,在命名空间中创建新的名字和与名字相关联的新对象(函数对象)。Python中所有东西都是对象,函数也不例外(函数必须在调用前先定义)。如果不为函数提供return语句,在默认情况下,将返回一个特殊的Python值None,它代表没有值,也是一种无限值,可以将一个变量和返回值None关联起来并打印验证(一般格式化输出喜欢用一个函数封装起来)。

例如:

open()函数:两个字符串参数,第一个字符串参数是文件的名称,第二个参数是指出对文件进行什么操作(“r”是读操作,“w”是写操作)并创建文件句柄。文件句柄是与文件内容相关联的对象,可以用文件句柄遍历文件内容

strip(str)函数用于删除字符串开头和结尾的指定字符,例如strip(“.,”)则删除开头和结尾的”,”与”.”

例子:

-----------------------------------------------

----------------------列表和元组--------------------
可以使用构造函数或者方括号[]来构造列表

使用构造函数创建列表需要注意:参数必须是一个集合,雅思查分参数集合中的每个元素都将添加到列表中

同字符串一样,列表也是序列类型,但是也有不同点,主要在如下两方面:
(1)列表可以包含任意类型的元素,甚至不同类型的元素也可以混在同一列表中

(2)列表是可变类型,意味着在创建列表对象后,还能发生变化

列表类型也拥有只作用于列表类型的方法:
(1)不修改列表的方法:
index(x):返回列表中与x相等的第一个元素的索引

count(x):返回列表中x出现的次数
(2)修改列表的方法:

append(x):在列表的尾部添加元素,列表的长度加1
pop():删除列表末尾的元素,并返回此元素

extend(C):需要一个集合作为参数。将此参数集合中的每个元素添加到列表的末尾,从而扩展列表。

insert(i,x):在指定位置i插入元素x
remove(x):删除列表中第一个值为x的元素
sort():对序列中的元素进行排序

reverse():将列表中的元素反向

例如:

结果:

序列的方法会直接在对象上进行分割。不同于字符串方法一般具有返回值,由于序列的可变性,方法可以直接对序列进行修改,因此方法并不需要具有返回值

----使用join方法在列表和字符串之间转换---

场景:常常需要通过split从字符串中取出一部分,处理片中的元素,然后再把处理结果放回去。对于这种情况,一种有效方式是采用字符串的join方法。

例如调用:”.”.join([“a”,”b”,”c”]),用冒号(:)作为分隔符,连接所有字符,生成字符串”a:b:c”

sorted函数(注意,不是方法),可以对任意集合类型进行排序,会转化为列表再进行排序

sorted函数原理:(1)使用list构造器将字符串转为字符列表(2)对列表排序
若想变回字符串再使用join方法进行合并

——————–可变对象及引用—————————
当两个名字引用同一个可变对象时,会发生一些有趣的事情。

对list1做的改变也会影响list2,因为两个名字都引用了同一个列表(可变对象)

如果想复制列表,可以使用字符串复制分片[:](从头到尾复制)。明确的说,石家庄雅思创建副本意味着Python将创建一个新的对象副本,因此这种修改不会影响其他对象,同样,is运算符显示这些名字没有引用同一对象,所以得到的结果是假。

可变与不可变:

当变量引用不可变对象时,使用该对象的任何操作(连接,替换,去除等)等将创建新对象,而不会改变引用的对象。与此相反,变量引用可变对象时,或者可能创建新的对象,或者改变被引用对象的本身,这取决于进行的是何种操作。例如:

得到的结果都是[1,2,3,9]。然而,前者创建一个新对象,后者却没有。

深拷贝与浅拷贝

  • Python中对象的赋值都是进行对象引用(内存地址)传递
  • 使用copy.copy(),可以进行对象的浅拷贝,它复制了对象,但对于对象中的元素,依然使用原始的引用.
    需要导入copy模块:
  • 如果需要复制一个容器对象,以及它里面的所有元素(包含元素的子元素),可以使用copy.deepcopy()进行深拷贝
  • 对于非容器类型(如数字、字符串、和其他’原子’类型的对象)没有被拷贝一说

-----未完待续

Python学习笔记摘要(一)类型 字符串 函数 列表 深浅拷贝的更多相关文章

  1. Python学习笔记(三)字符串类型及其操作(2)

    1.字符串的表示 字符串是字符的序列表示,可以由一对单引号(‘).双引号(“)或三引号(’‘’)构成.其中,单引号.双引号和三引号都可以表示单行字符串,但是只有三引号可以表示多行字符串 在使用双引号时 ...

  2. (转)python学习笔记4--数字类型与操作符

    原文:https://blog.csdn.net/lemonwyc/article/details/37558269 1. 同时赋值(Simultaneous Assignments) python支 ...

  3. Mysql学习笔记(四)字符串函数

    PS:终于看完了字符串函数,心都快碎了...涉及的函数真是太多了...感觉这里的字符串函数和JAVA里的基本都差不多了...基本上算是掌握了,但是想全记住那是不太可能的... 学习内容: 字符串函数的 ...

  4. Python 学习笔记(6)— 字符串格式化

    字符串格式化处理 远古写法 以前通常使用运算符号 % ,%s 插入的值 String 类型,%.3f 指插入的值为包含 3 位小数的浮点数: format1 = "%s, %s!" ...

  5. python学习笔记(二)— 字符串(string)

    字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello World!' var2 ...

  6. Python学习笔记:String类型所有方法汇总

    # 按字母表熟悉下string中的方法# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z# 标红的为常用重点的方法!! str = " ...

  7. python学习笔记:第五天( 列表、元组)

    Python3 列表 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见 ...

  8. 记录我的 python 学习历程-Day06 is id == / 代码块 / 集合 / 深浅拷贝

    一.is == id 用法 在Python中,id是内存地址, 你只要创建一个数据(对象)那么就会在内存中开辟一个空间,将这个数据临时加载到内存中,这个空间有一个唯一标识,就好比是身份证号,标识这个空 ...

  9. Python学习笔记(四)字符串型

    字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言 ...

随机推荐

  1. create-react-app 项目安装less

    1.安装依赖: npm install less less-loader --save-dev 2.在webpack.config.js里面添加配置:(若webpack.config.js文件没有显示 ...

  2. JMeter Gui – TestElement约定[转]

    转自https://www.cnblogs.com/yigui/p/7615635.html 在编写任何JMeter组件时,必须注意某些特定的约定--如果JMeter环境中正确地运行JMeter组件, ...

  3. 某学院m3u8视频解密获取分析实战分享

    [免责声明]本文来源于作者个人学习整理,仅供学习交流使用,不构成商业目的.所有资源均系本人个人学习或网络收集,仅提供一个展示.介绍.观摩学习的博文,不对其内容的准确性.可靠性.正当性.安全性.合法性等 ...

  4. Java数组02——三种初始化及内存分析

    内存分析 三种初始化 例子  package array; ​ public class ArrayDemon02 {     public static void main(String[] arg ...

  5. appium自动化测试(5)-一些pyhon操作

    1.套件的问题 将所有的测试用例加进去,会一个个执行,用于用例名字没有规范test开头的时候 def suite(): suite = unittest.TestSuite suite.addTest ...

  6. Android茫茫半年求职路,终于斩获三个大厂offer

    前言 2019年底,公司出现危机,开始"优化",本组一个小兄弟被"优化",于是我也着手开始做准备,将来若轮到我被"优化",出去面试时也好打个 ...

  7. silky微服务简介

    代理主机 silky微服务定义了三种类型的代理主机,开发者可以根据需要选择合适的silky代理主机托管微服务应用.代理主机定义了一个Startup模块,该模块给出了使用该种类型主机所必须依赖的模块. ...

  8. Linux中配置ftp传输

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  9. Awesome Notes

    Install $ sudo aptitude install awesome Build from source $ aria2c -s 5 http://awesome.naquadah.org/ ...

  10. 设计模式:单例模式的使用和实现(JAVA)

    单例模式的使用 jdk和Spring都有实现单例模式,这里举的例子是JDK中Runtime这个类 Runtime的使用 通过Runtime类可以获取JVM堆内存的信息,还可以调用它的方法进行GC. p ...