Python初学(1)

半年前就想写博客, 无奈太懒。现在开始学一门新的语言python(参考学习资料《Python学习手册第4版》),写写笔记博客。

有兴趣的同行一起学习。如果有朋友看到这些博客,也在学python。首先你要搞懂什么是面向对象。我做了几年C++,太基础的东西就不写了。直接进入主题。

                                                               Python内置对象类型及其语法(部分)

 

Python 核心数据类型

对象类型

语法示例(常量/创建)

数字

1234,3.1415,3+4j,Decimal,Fraction

字符串

‘spam’,”guido’s”,b’a\xolc’

列表

[1,[2,’three’],4]

字典

{‘food’:’spam’,’taste’:’yum’}

元组

(1,’spam’,4,’U’)

文件

Myfile=open(‘eggs’,’r’)

集合

set(‘abc’),{‘a’,’b’,’c’}

其他类型

类型,None,布尔型

编程单元类型

函数,模块,类

与实现相关的类型

编译的代码堆栈跟踪

 

注意:1Python 中没有类型声明,运行的表达式的语法决定了创建和使用的对象类型。

 

数字


注:以上是按照书上的例子运行结果,数字运算表达式,len(str(2**1000000)),将21000000次幂用str转成字符串然后len 求出长度。

最后两个,3.1415*2 是测试浮点数的表示范围,书上的例子:


   说是浮点数表示范围会不一样,不过我的是Ubuntu15.04 带的python3,默认的模式两种方式的表达效果是一样的。除了表达式之外和python一起分发的还有一些常用的数学模块,模块只不过是我们导入以供使用的一些额外的工具包。


注:几个简单的应用。导入数学模块 math, math.pi->圆周率;

  导入随机数模块 random random.random()用于生成一个01的随机符点数: 0 <= n < 1.0

  Random 相关:random.uniform的函数原型为:random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成的随机数n: a <= n <= b。如果 a <b, 则 b <= n <= a

  random.randint()的函数原型为:random.randint(a, b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b

  random.choice从序列中获取一个随机元素。其函数原型为:random.choice(sequence)。参数sequence表示一个有序类型。这里要说明 一下:sequencepython不是一种特定的类型,而是泛指一系列的类型。list, tuple, 字符串都属于sequence 

  更多内容可以查看python手册


序列操作:

  作为序列,字符串支持假设其中各个元素包含位置顺序的操作。例如,我们有一个4个字符的字符串,我们通过内置的len函数验证其长度病通过索引操作得到其各个元素。


注:创建一个字符串SS是包含‘Spam’ 4个字符的字符串。

len()计算字符串的长度,前面我们用到过。

S[0] 索引第一个字符串,有C语言基础的应该看到这个和C语言的字符串数组非常类似。

S[-1] 索引倒数第一个字符,这里和C语言的字符串数组完全不同。

S[1:3] 取字符串的某一段,这里是索引为12的两个字符,注意这里不包含索引为3的字符。

剩下的几种对比输出结果就很明显了,不再解释。


字符串的运算:

:链接两个字符串,产生一个新的字符串

*N:字符串自加N次。产生一个新的字符串。

 

字符串的不可变性

  注意:在这之前的例子中,没有通过任何操作对原始字符串进行改变。每个字符串都被定义为生成新的字符串作为其结果,因为字符串在Python中具有不可变性(在C#中字符串同样也具有这种不可变性)——在常见后不能就地改变。例如,不能通过对其某一位置进行赋值而改变字符串,但是你总是可以通过创建一个新的字符串并以同一个变量名对其进行赋值。因为Python在运行过程中会清理旧的对象(下面的例子,你可以看到),这并不像听起来那么复杂:

另外:在练习中屏幕的输出很多(我有洁癖),我们可以通过一下操作,清理屏幕:

import os

i=os.system(‘clear’)

  

 

  下面继续看看字符串的不可变性。

 

  当我们通过索引试图修改字符串的内容时,可以看到报错信息。

  但是我们可以通过重新赋值的方式来改变S的内容,实际上是将变量重新指向了新生成的对象。而原来的内存空间中“Spam” 的内容是没有任何改变的。


  在Python中的每一个对象都可以分为可变性或者不可变性。在核心类型中,数字,字符和元组是不可变的;列表和字典不是这样(他们可以完全自由的改变)。在其他方面,这种不可变性可以用来保证在程序中保持一个对象固定不变。

 

类型特定的方法

目前为止,前面的每个字符串操作都是以供真正的序列操作。也就是说,这些操作在Python中的其他序列中也会工作,包括列表和元组。尽管这样,除了一般序列的操作,字符串还有独有的操作方法(对象的函数,将会通过以供调用的表达式触发)。

例如,字符串的find方法是以供基本的子字符串查找的操作。而字符串的replace方法将会对全局进行搜索和替换。

 

 

  可以看到,尽管这些字符串的命名有改变的意思。但参见前面的字符串的不可变性,和图中的例子,原字符串的内容并没有改变,而是产生了一个新的临时对象。

  另外其他的操作:字符串拆分,大小写切换,测试字符串的内容,去掉字符串后的空格字符。

 

注:split() 以指定字符分割字符串。upper()转成大写,rstrip()去掉结尾的空格。 

  字符串还有一种叫做格式化的高级代替操作。可以有表达式和字符串调用方法,两种方式使用:

 

  简单的说,就是在制定位置通过特殊的标记,用后面的字符串逐个替代特殊标记。

  在表达式方式中,用后面的字符串替代表达式中的%s,在方法调用方式中,用字符串替代{}位置。另外细心的可以发现在Python中单引号和双引号括起来的字符串是一样的,这个在C语言中是不同的字符串必须是双引号,字符必须是单引号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值