一, 基本概念
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 comment
- print "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. 运算符优先级(从低到高)
我刚整理了一套 2018 最新的 0 基础入门和进阶教程, 无私分享, 加 Python 学习 q u n :227-435-450 即可获取, 内附: 开发工具和安装包, 以及系统学习路线图
三. 控制流
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 表示没有任何东西的特殊类型
来源: http://www.jianshu.com/p/df93e799b9f4