python3笔记

 

这是我看a byte of python3是所做的笔记,是站在一个使用c++的人的角度去记的笔记,笔记中包含的是python相对于c++独有的一些语法,或者是与c++相似但不完全相同,需要特别注意的地方。

a byte of python3中文版:http://blog.csdn.net/I_NBFA/archive/2010/09/08/5870676.aspx#1594235/

a byte of python3英文原版:http://www.swaroopch.com/notes/Python


1.python是解释型的动态语言,内部执行原理是——先将源代码(以.py为后缀)编译成中间码(又叫字节码,以.pyc为后缀),然后再解释为可供计算机执行到本地码(二进制)。python解释器包含编译器和虚拟机,分别负责编译和解释工作,与java不同的是python是弱编译型语言,可以直接在源码级运行,而java是强编译型语言,必须编译成中间码形式才能运行,这可能就是一般将python归为解释性语言,而将java归为编译型语言的原因吧。

2.python3只有三种数字类型——整形,浮点数,复数。

3.python的字符串可以放在单引号中,也可一放在双引号中,效果一样。对于多行字符串,可以用三引号'''或者”””将两个字面字符串放在一起,python会将其连接成一个字符串,如'Hello''World'=='Hello' 'World'=='Hello'+'World”=='HelloWorld',python中可以直接使用==>=,<=,!=对两个字符串进行比较(跟c++中到字符串对象一样)

4.原始字符串——如果你不希望python对字符串进行特别处理,比如取消转义字符,可以为字符串加上前缀rR.例如r"Newlines are indicated by/n"。这是执行print(r"Newlines are indicated by /n")会输出: /n,而不会输出Newlines are indicated by加换行。

5.正则表达式用户请注意永远使用原始字符串编写正则表达式,否则会需要大量的反斜杠,例如反向引用可以表示为'//1'r'/1'.

7.对象记住,在python中一切皆对象,因此从广义上我们不说"某物"而说"某对象"python是很彻底的面向对象语言,它的一切包括数字,字符串和函数全是对象。

8.变量被赋值后即可使用,这里无需变量声明或数据类型定义.

9.运算符——幂运算符‘**/除法可以得到小数值//相当与c/c++中到/’,not相当与c/c++中到’。

10.pythonandor返回的是操作数,x and y如果xFalse则返回x否则返回y, x or y如果xTrue则返回x否则返回y

11.python以缩进来区分块,以来引导块(在控制结构或函数中)。注释以‘#’号开始。

12.python中到if语句

if条件判断:#可以给条件判断加圆括号,也可以不加,一般情况下不加

   1

elif条件判断:       #注意c/c++中是else if

   2

else

   3

13.python没有switch语句,你可以使用if…elif…else语句达到同样的目的(有时用字典代替会更加快捷)

14.while语句

while条件判断:

   1

else:             #注意c/c++中无此分支,python中此分支也是可选的

   2

15.for-in循环

forin是另一种循环语句,用来遍历序列对象,也就是说遍历序列中的每个元素。

for i in range(1, 5):#rage用于产生一个序列[1,2,3,4]

    print(i)

else:

    print('The for loop is over')

16.break语句

break语句用于跳出循环,即停止循环语句的执行,即使循环条件还没有变为False或者序列的遍历尚未完成。一个需要特别注意的地方是如果你使用break跳出forwhile循环,那么相关的else块不会被执行。

17.pythonboolTrueFalse的首字母必需大写。

18.函数

def 函数名(形参表列):# def fun(a, b):  

   函数体                                 #       函数体

c/c++的不同:1,函数名前有def关键字无函数类型2,函数形参前无定义类型3,形参表列后跟一‘:’引导函数体(即块)4,虽然python函数没有函数类型,但是它可以使用return或者return None使程序提前结束,还可以返回其它任何合法的python内置类型或者自定义类型5,由于python是动态语言,所以python可以嵌套定义函数(即在函数内部定义其它函数),而c/c++只能平行定义函数。

18.使用global语句当你希望在函数中改变顶级变量的值(没有定义在任何其他作用域中的变量,比如函数或类作用域,相当于c/c++中的全局变量)。这时你必须使用global(global x)告诉python,名字不是局部而是全局的。否则,函数内部认为改变量是局部的,与同名全局变量没有关系。

19.使用nonlocal语句:非局部变量,它介于局部和全局之间。当在函数内定义函数时(c/c++中的函数是平行关系,不能镶嵌定义)你会注意到非局部作用域。

如:

def fun_out():

    y = 3     #此时x相对于函数fun_in来说就是非局部的

    def fun_in():

         pass

20.关键实参如果你有一些函数拥有许多参数,但你只想使用其中的几个,这时你可以通过形参名为其赋值。这被称做关键实参 使用形参名(关键字)为函数指定实参而不是我们一直使用的通过位置指定实参。这样做有两个优点,首先函数用起来更简单,因为我们不用操心实参的顺序了。其次,可以只为我们感兴趣的形参赋值,如果其它参数带有默认实参值的话。

21.可变参数函数(VarArgs)有时你可能希望编写一个可以接受任意多个形参的函数,使用星号可以帮你做到

def total(initial=5, *numbers, **keywords):

当我们以星号声明一个形参比如*param,那么这个参数点之后的所有实参会被收集成一个列表,本例中这个列表叫做param。与之类似如果我们以双星号声明一个形参,它会被收集成一个关键字实参字典。

22.只能以关键字赋值的形参(Keyword-only Parameters)

如果我们希望某些关键字形参只能通过关键字实参得到而不是按照实参的位置得到,可以将其声明在星号形参后面如果你只需要keyword-only实参但不需要星号实参,那么可以简单的省略星号实参的实参名。例如def total(initial=5, *, vegetables)

23.Nonepython的一个特殊类型,代表空。例如如果一个变量的值为None则代表它不存在值。每个函数的末尾都隐含的包含一个return None语句除非你编写了自己的return语句。你可以通过print(someFunction())证实这点,someFunction是一个没有显式使用return语句的函数。例如:

def someFunction():

    pass

其中pass语句用来指示一个空语句块。

24.DocStrings

python拥有一个俏皮的特性被称作文档字符串,通常它被简称为docstrings

文档字符串是一个你应该利用的重要的工具,因为它帮助你更好的注释程序使得程序更易于理解。更神奇的是你甚至可以在程序运行时取得文档字符串!如果你在python使用过help(),其实你已经看到过文档字符串的应用了!help()只是取出函数的__doc__属性,然后以一种整洁的方式显示给你。

25.模块:与函数类似是一种复用代码的方式。有各种编写模块的方式,但最简单的方式是创建一个以.py或者.pyc(可以以较高效率导入)为后缀的文件并包含所需的函数与变量。另一种方式是以编写python解释器的本地语言编写模块。我们可以使用import(需要名字空间[即模块名,也就是被导入的文件名]和‘.’来引用模块中的变量和函数)fromimport() fromimport * (导入模块中的所有属性[包括变量和函数],不需要使用名字空间来引用从模块中被导入的变量和函数)来导入模块,第一种最好,第二种次之,第三种较差(特别容易引起名字冲突)

26.python内置数据结构:即序列和字典。序列又包含列表、字符串、元组,列表为可变类型,后两种为不可变类型。序列最主要的特点在于支持成员从属测试(即,表达式中的innot in操作)和索引操作。其中索引操作允许我们直接地获取序列中的指定元素。以上说到的三种序列类型 – liststuplesstrings还支持一种切片操作,允许我们得到序列的一个切片,即序列的部分。字典包含的是键值对,它是无序的,就像通讯录,我们通过人名就可以找到其电话、email等信息。

27.拥有0个或1个元素的元组

一个空元组通过空小括号创建,例如myempty = ()。不过,指定一个单元素元组就不那么直观了。你必须在其仅有的一个元素后跟随一个逗号,这样python才能区分出你要的是元组而不是一个被小括号包围的对象的表达式。例如你想要一个包含值为2的单元素元组,则必须写成singleton = (2, ) 

28.python的类

29.异常Exception

所涉及的关键字:tryraise(相当于c++中的throw,注意它抛出的抛出的错误或异常必须是一个间接或直接派生自Exception类的类)except(相当于c/c++中的catch), finallywith(确保文件不会遇到异常而没有被关闭的一种比较简明的方式) 

30.软件开发过程

1. 分析——需要什么功能

2. 设计——如何实现它们

3. 实现——编码

4. 测试和debug——测试这些功能

5. 实施或部署——使用

6. 维护——改良 

我们创建一个程序时,首先分析和设计然后实现一个简单版本。测试并debug确定它能够如期工作。最后增加你需要的新特性并重复编写-测试-使用的过程直到你满意为止。记住,软件是一步步的扩展起来的,而不是一下子就建造起来的。

附:

python 简明编程规范:http://blog.csdn.net/lanphaday/archive/2008/08/26/2834883.aspx



 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值