一、基本概念
1.内置的变量类型:
Python是有变量类型的,而且会强制检查变量类型。内置的变量类型有如下几种:
#浮点
float_number = 2.3
#复数
complex_number = 1 + 5j#整型
integer_number = 1
#list 序列
sample_list = [2,52,36,‘abc’]
#嵌套
sample_nest = [(2,4,6),{5:7,9:11,‘key’:[2,5]},6]
#dictionary 字典
sample_dic = {“key”:value, 5:10}
#tuple 只读的序列
sample_tuple = (3,9,“ab”)
从上面的示例可以看出,python的变量无需声明,可直接给变量赋值。
2.字符串
python中声明一个字符串通常有三种方法,’’、" "和’’’ ‘’’,这三种方法在声明普通字符串时的效果是完全一样的,区别在于字符串本身中存在引号的情况,举例如下:
word = ‘good’
sentence = “hello world”
paragraph = ‘’‘good noon:“nice to meet you.”’’’
python中单行注释采用#开头。
#!/usr/bin/python
First commentprint “Hello, world!”; # second comment上述内容输出:hello,Python!。注释可以在语句或表达式行末。
多行注释可采用三引号,比如:
‘’'This is a comment.This is a comment, too.This is a comment, too.I said that already.’’’
转义符 ‘’;
自然字符串, 通过在字符串前加r或R。 如 r"this is a line with " 则 会显示,并不是换行。
python允许处理unicode字符串,加前缀u或U, 如 u"this is an unicode string"。
3.Python标识符
在python里,标识符有字母、数字、下划线组成。
在python中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
python中的标识符是区分大小写的。
以下划线开头的标识符是有特殊意义的。以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用"from xxx import *"而导入;
以双下划线开头的(foo)代表类的私有成员;以双下划线开头和结尾的(foo)代表python里特殊方法专用的标识,如__init()代表类的构造函数。
4.Python保留字符
下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数,或任何其他标识符名称。
所有Python的关键字只包含小写字母。
5.行和缩进
学习Python与其他语言最大的区别就是,Python的代码块不使用大括号({})来控制类,函数以及其他逻辑判断。python最具特色的就是用缩进来写模块。
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。如下所示:
if True:
print “True”
else:
print “False”
上述,if与else的缩进空白数量相同。以下代码将会报错:
if True:
print “Answer”
print “True”
else:
print “Answer”
print “False”
python中分号;标识一个逻辑行的结束,但是实际中一般每个物理行只写一个逻辑行,可以避免使用分号。这样书写便于阅读。注意:不要混合使用空格和制表符来缩进,因为在跨越不同的平台时无法正常工作。
多个物理行中可以写一个逻辑行,使用行连接符,如下:
s = "peter is
writing this article"
二、运算符与表达式
1. 运算符与其用法
2. 运算符优先级(从低到高)
三.控制流
1. 条件语句
1.1 if语句
例子, 执行if语句内的程序
a = input(“a:”)
b = input(“b:”)
if(a > b):
print a, " > ", b
if else语句:
a = input(“a:”)
b = input(“b:”)
if(a > b):
print a, " > ", b
else:
print a, " < ", b
1.2 if…elif…else语句
例子:根据输入的分数,输出分数等级:
score = raw_input(“score:”)
score**=**int(score)
if(score >= 90) and (score <= 100):
print “A”
elif(score >= 80) and (score < 90):
print “B”
elif(score >= 60) and (score < 80):
print “C”
else:
print “D”
raw_input() 读取输入值。
1.3 if语句的嵌套
编写条件语句时,应该尽量避免使用嵌套语句。嵌套语句不便于阅读,而且可能会忽略一些可能性。
x = **-**1
y = 99
if(x >= 0):
if(x > 0): #嵌套的if语句
y = 1
else:
y = 0
else:
y = **-**1
print “y =”, y
1.4 实现switch语句的功能
python中没有switch特殊字,Python可以通过字典实现switch语句的功能。
实现方法分两步。首先,定义一个字典。字典是由键值对组成的集合。其次,调用字典的get()获取相应的表达式。
from future import division
x = 1
y = 2
operator = “/”
result = {
“+” : x + y,
“-” : x - y,
“*” : x ***** y,
“/” : x / y
}
print result.get(operator)
输出为0.5;
另一种使用switch分支语句的方案是创建一个switch类,处理程序的流程。
a) 创建一个switch类,该类继承自Python的祖先类object。调用构造函数init( )初始化需要匹配的字符串,并需要定义两个成员变量value和fall。Value用于存放需要匹配的字符串,fall用于记录是否匹配成功,初始值为false,标识匹配不成功。如果匹配成功,程序往后执行。
b) 定义一个match( )方法,该方法用于用于匹配case子句。这里需要考虑三种情况:首先是匹配成功的情况,其次是匹配失败的默认case子句,最后是case子句中没有使用break中断的情况。
c) 重写__iter__( )方法,定义该方法后才能使switch类用于循环语句中。iter( )调用match( )方法进行匹配。通过yield保留字,使函数可以在循环中迭代。此外,调用StopIteration异常中断循环。
d) 编写调用代码,在for…in…循环中使用switch类。
#!/usr/bin/python
-- coding: UTF-8 --
class switch(object):
def init(self, value): # 初始化需要匹配的值value
self.value = value
self.fall = False # 如果匹配到的case语句中没有break,则fall为true。
def iter(self):
yield self.match # 调用match方法 返回一个生成器
raise StopIteration # StopIteration 异常来判断for循环是否结束
def match(self, *****args): # 模拟case子句的方法
if self.fall or not args: # 如果fall为true,则继续执行下面的case子句
或case子句没有匹配项,则流转到默认分支。
return True
elif self.value in args: # 匹配成功
self.fall = True
return True
else: # 匹配失败
return False
operator = “+”
x = 1
y = 2
for case in switch(operator): # switch只能用于for in循环中
if case(’+’):
print x + y
break
if case(’-’):
print x - y
break
if case(’*’):
print x ***** y
break
if case(’/’):
print x / y
break
if case(): # 默认分支
print “”
2.while…语句
只要在一个条件为真的情况下,while语句允许你重复执行一块语句。while语句是所谓 循环 语句的一个例子。while语句有一个可选的else从句。
while True:
pass
else:
pass
#else语句可选,当while为False时,else语句被执行。 pass是空语句。
3.for 循环
for i in range(0, 5):
print i
else:
pass
打印0到4
注:当for循环结束后执行else语句;range(a, b)返回一个序列,从a开始到b为止,但不包括b,range默认步长为1,可以指定步长,range(0,10,2);
四、函数
函数通过def定义。def关键字后跟函数的标识符名称,然后跟一对圆括号,括号之内可以包含一些变量名,该行以冒号结尾;接下来是一块语句,即函数体。
def sumOf(a, b):
return a + b
4.1 局部变量
在函数内定义的变量与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是局部的。这称为变量的作用域。global语句, 为定义在函数外的变量赋值时使用global语句。
def func():
global x
print "x is ", x
x = 1
x = 3
func()
print x
以上代码,输出的结果为:
3
1
4.2 默认参数
通过使用默认参数可以使函数的一些参数是‘可选的’。
def say(msg, times = 1):
print msg ***** times
say(“peter”)
say(“peter”, 3)
**注意:**只有在形参表末尾的那些参数可以有默认参数值,即不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的形参,只是因为赋给形参的值是根据位置而赋值的。
4.3 关键参数
如果某个函数有很多参数,而现在只想指定其中的部分,那么可以通过命名为这些参数赋值(称为‘关键参数’)。
优点:不必担心参数的顺序,使函数变的更加简单;假设其他参数都有默认值,可以只给我们想要的那些参数赋值。
def func(a, b**=2, c=**3):
print “a is %s, b is %s, c is %s” % (a, b, c)
func(1) #输出a is 1, b is 2, c is 3
func(1, 5) #输出a is 1, b is 5, c is 3
func(1, c = 10) #输出a is 1, b is 2, c is 10
func(c = 20, a = 30) #输出a is 30, b is 2, c is 20
4.3 return语句
return语句用来从一个函数返回,即跳出函数。可从函数返回一个值。
没有返回值的return语句等价于return None。None表示没有任何东西的特殊类型。