Python学习记录
- Python 中对类型的判断有三种形式:
- if type(L) == type([]): ...
- if type(L) == list: ...
- i isinstance(L,list): ... (但是通常在用python编程时不应该出现这种类型判断,即使python支持它,因为它会使程序变得不灵活,非python编程之道。更多的情况是直接面对Object接口,多态往往是最佳的选择。)
- 虽然通常被称为脚本语言,但是Python却并不真的只是“脚本语言”那么简单,它是一门强大的程序设计语言,几乎可以满足你大多数的项目需求。"Object"是它的一个非常强大的特征,但同时也是可选的一个特征:
- python中定义一个对象的形式如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 class User: 2 def __init__(self,name,age): #创建的时候初始化,self 就是新创建的对象 3 self.name = name 4 self.age = age 5 def lastName(self): 6 return self.name.split()[-1] 7 def growUp(self,increment): 8 self.age += increment
创建新对象:u = new User('jacob',20)
访问对象函数:u.lastName()
访问对象属性:u.age
python中的对象和Java 、C++等面向对象语言类似,都是字符串、数字和对这些字符串和数字的操作(类函数)组成的。
- dict创建的两种方式:
- jacob ={'name','jc','age',23,'job','cs'}
- jacob=dict(name='jc',age=23,job='cs')
- [...] 表示列表、{...}表示字典(dictionary)、(...)表示元组或者表达式
- 2//3 等于0 然而 2/3却等于0.6666666...
- 解释Python中的 a = 3 执行:
- 创建一个对象用于存放3
- 创建一个变量a
- 把变量a只想 存放3的对象 (引用)
变量没有类型,只是所指向的对象的类型发生变化了。
- 需要注意的特殊命名规则(或约定):
- 以一个下划线开始的名称(_X)将不会被"from module import *" 导入。
- 前后都有两个下划线的名称(__X__)是系统定义的名称,对于编译器有特殊的意义。
- 以两个下划线开始的名称(__X)是类的局部变量。
- 只有一个下划线的名称(_)将会记录最后一个表达式的结果。
- 重定向输出:
- 给sys.stdout 直接赋值。
- 简便方式:print(1,2,3,file=xxx); xxx代表要输出的文件对象,用open打开文件便可获取该对象。
- 关于If语句:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 if <test1>: 2 <statements> 3 elif <test2>: 4 <statements> 5 ... 6 else: 7 <statements>
- python并不存在和Java或者C语言类似的switch/case 语句,但是可以用dict数据结构代替:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 choice = "ham" 2 print({'spam':1.25, 3 'ham':2.55, 4 'egg':0.55, 5 'bacon':5.65}[choice] 6 )
it is "pythonic":
1 #基于Dictionary的分支调用技巧: 2 branch ={'egg':2.33,'van':8.88,'beer':6.55} 3 choice='egg' 4 if(choice) in branch: 5 print(branch[choice]) 6 else: 7 print('Bad choice') 8 #或者: 9 print(branch.get(choice),'Bad choice')
- 关于while循环:
while <test> : <statements> else: <statements>
- 可以用zip对象创建元组,而zip是可迭代的对象,所以按照常规的做法,可以把它用list包起来,以便输出所有的数据 list(zip(L1,L2))
- def是可执行的语句,因此下面嵌套定义是成立的:
def f1() X = 88 def f2() printf(X) f2() f1()