python学习-基础语法

Author Avatar
第五季 2017.8.10
字数:3,174字 时长:13分钟
  • 微信扫一扫分享

python变量

Python 中的变量赋值不需要类型声明。
每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:

1
2
3
4
5
6
7
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串

print counter
print miles
print name

标准数据类型

在内存中存储的数据可以有多种类型。
例如,一个人的年龄可以用数字来存储,他的名字可以用字符来存储。
Python 定义了一些标准类型,用于存储各种类型的数据。
Python有五个标准的数据类型:
Numbers(数字)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)

pytho数字

数字数据类型用于存储数值。
他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。
当你指定一个值时,Number对象就会被创建:

1
2
var1 = 1
var2 = 10

您也可以使用del语句删除一些对象的引用。
del语句的语法是:

1
del var1[,var2[,var3[....,varN]]]]

您可以通过使用del语句删除单个或多个对象的引用。例如:

1
2
del var
del var_a, var_b

Python支持四种不同的数字类型:

int(有符号整型)
long(长整型[也可以代表八进制和十六进制])
float(浮点型)
complex(复数) 

Python字符串

字符串或串(String)是由数字、字母、下划线组成的一串字符。
它是编程语言中表示文本的数据类型。
python的字串列表有2种取值顺序:

从左到右索引默认0开始的,最大范围是字符串长度少1
从右到左索引默认-1开始的,最大范围是字符串开头

如果你要实现从字符串中获取一段子字符串的话,可以使用变量 [头下标:尾下标],就可以截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
比如:
s = ‘ilovepython’
s[1:5]的结果是love。
当使用以冒号分隔的字符串,python返回一个新的对象,结果包含了以这对偏移标识的连续的内容,左边的开始是包含了下边界。
上面的结果包含了s[1]的值l,而取到的最大范围不包括上边界,就是s[5]的值p。
加号(+)是字符串连接运算符,星号(*)是重复操作。如下实例:

1
2
3
4
5
6
7
8
str = 'Hello World!'

print str # 输出完整字符串
print str[0] # 输出字符串中的第一个字符
print str[2:5] # 输出字符串中第三个至第五个之间的字符串
print str[2:] # 输出从第三个字符开始的字符串
print str * 2 # 输出字符串两次
print str + "TEST" # 输出连接的字符串

以上实例输出结果:

1
2
3
4
5
6
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST

Python列表

List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用 [ ] 标识,是 python 最通用的复合数据类型。
列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
加号 + 是列表连接运算符,星号 * 是重复操作。如下实例:

1
2
3
4
5
6
7
8
9
list = [ 'seasonfif', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']

print list # 输出完整列表
print list[0] # 输出列表的第一个元素
print list[1:3] # 输出第二个至第三个元素
print list[2:] # 输出从第三个开始至列表末尾的所有元素
print tinylist * 2 # 输出列表两次
print list + tinylist # 打印组合的列表

以上实例输出结果:

1
2
3
4
5
6
['seasonfif', 786, 2.23, 'john', 70.2]
seasonfif
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['seasonfif', 786, 2.23, 'john', 70.2, 123, 'john']

Python元组

元组是另一个数据类型,类似于List(列表)。
元组用”()”标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

1
2
3
4
5
6
7
8
9
tuple = ( 'seasonfif', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')

print tuple # 输出完整元组
print tuple[0] # 输出元组的第一个元素
print tuple[1:3] # 输出第二个至第三个的元素
print tuple[2:] # 输出从第三个开始至列表末尾的所有元素
print tinytuple * 2 # 输出元组两次
print tuple + tinytuple # 打印组合的元组

以上实例输出结果:

1
2
3
4
5
6
('seasonfif', 786, 2.23, 'john', 70.2)
seasonfif
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('seasonfif', 786, 2.23, 'john', 70.2, 123, 'john')

以下是元组无效的,因为元组是不允许更新的。而列表是允许更新的:

1
2
3
4
tuple = ( 'seasonfif', 786 , 2.23, 'john', 70.2 )
list = [ 'seasonfif', 786 , 2.23, 'john', 70.2 ]
tuple[2] = 1000 # 元组中是非法应用
list[2] = 1000 # 列表中是合法应用

Python 字典

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用”{ }”标识。字典由索引(key)和它对应的值value组成。

1
2
3
4
5
6
7
8
9
10
11
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"

tinydict = {'name': 'john','code':6734, 'dept': 'sales'}

print dict['one'] # 输出键为'one' 的值
print dict[2] # 输出键为 2 的值
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值

输出结果为:

1
2
3
4
5
This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']

Python条件语句

Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
Python 编程中 if 语句用于控制程序的执行,基本形式为:

1
2
3
4
if 判断条件:
执行语句……
else
执行语句……

其中”判断条件”成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。
else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句,具体例子如下:

1
2
3
4
5
6
7
flag = False
name = 'java'
if name == 'python': # 判断变量否为'python'
flag = True # 条件成立时设置标志为真
print 'hello world' # 并输出欢迎信息
else:
print name # 条件不成立时输出变量名称

当判断条件为多个值时,可以使用以下形式:

1
2
3
4
5
6
7
8
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……

由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现

Python循环语句

Python提供了for循环和while循环(在Python中没有do..while循环):

while循环
1
2
3
4
5
6
count = 0
while (count < 9):
print 'The count is:', count
count = count + 1

print "Good bye!"

以上代码的运行结果是:

1
2
3
4
5
6
7
8
9
10
The count is: 0
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 5
The count is: 6
The count is: 7
The count is: 8
Good bye!

while还可以和else搭配使用:

1
2
3
4
5
6
count = 0
while count < 5:
print count, " is less than 5"
count = count + 1
else:
print count, " is not less than 5"

for循环

1、最基础的循环:

1
2
3
4
5
6
7
8
for letter in 'Python':     # 第一个实例
print '当前字母 :', letter

fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # 第二个实例
print '当前水果 :', fruit

print "Good bye!"

输出结果如下:

1
2
3
4
5
6
7
8
9
10
当前字母 : P
当前字母 : y
当前字母 : t
当前字母 : h
当前字母 : o
当前字母 : n
当前水果 : banana
当前水果 : apple
当前水果 : mango
Good bye!

2、另外一种执行循环的遍历方式是通过索引,如下实例:

1
2
3
4
5
fruits = ['banana', 'apple',  'mango']
for index in range(len(fruits)):
print '当前水果 :', fruits[index]

print "Good bye!"

3、使用内置 enumerate 函数进行遍历:

1
2
3
sequence = [12, 34, 34, 23, 45, 76, 89]
for i, j in enumerate(sequence):
print i,j

结果如下:

1
2
3
4
5
6
7
0 12
1 34
2 34
3 23
4 45
5 76
6 89

Python函数

函数语法
1
2
3
4
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]

规则:

1
2
3
4
5
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None

函数调用

定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。
这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。
如下实例调用了printme()函数:

1
2
3
4
5
6
7
8
9
# 定义函数
def printme( str ):
"打印任何传入的字符串"
print str;
return;

# 调用函数
printme("我要调用用户自定义函数!");
printme("再次调用同一函数");

参数

以下是调用函数时可使用的正式参数类型:

1
2
3
4
必备参数
关键字参数
默认参数
不定长参数

必备参数

必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
调用printme()函数,你必须传入一个参数,不然会出现语法错误:

1
2
3
4
5
6
7
8
#可写函数说明
def printme( str ):
"打印任何传入的字符串"
print str;
return;

#调用printme函数
printme();

以上实例输出结果:

1
2
3
4
Traceback (most recent call last):
File "test.py", line 11, in <module>
printme();
TypeError: printme() takes exactly 1 argument (0 given)

关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
以下实例在函数 printme() 调用时使用参数名:

1
2
3
4
5
6
7
8
#可写函数说明
def printme( str ):
"打印任何传入的字符串"
print str;
return;

#调用printme函数
printme( str = "My string");

以上实例输出结果:

1
My string

默认参数

调用函数时,默认参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:

1
2
3
4
5
6
7
8
9
10
#可写函数说明
def printinfo( name, age = 35 ):
"打印任何传入的字符串"
print "Name: ", name;
print "Age ", age;
return;

#调用printinfo函数
printinfo( age=50, name="miki" );
printinfo( name="miki" );

以上实例输出结果:

1
2
3
4
Name:  miki
Age 50
Name: miki
Age 35

不定长参数

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:

1
2
3
4
def functionname([formal_args,] *var_args_tuple ):
"函数_文档字符串"
function_suite
return [expression]

加了星号(*)的变量名会存放所有未命名的变量参数。不定长参数实例如下:

1
2
3
4
5
6
7
8
9
10
11
12
# 可写函数说明
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print "输出: "
print arg1
for var in vartuple:
print var
return;

# 调用printinfo 函数
printinfo( 10 );
printinfo( 70, 60, 50 );

以上实例输出结果:

1
2
3
4
5
6
输出:
10
输出:
70
60
50