Python语法基础
(1) 语句块缩进
· python代码块通过缩进对其表达代码逻辑而不是使用大括号
· 缩进表达一个语句属于哪个代码块
· 缩进风格
- 1或2:可能不够,很难确定代码语句属于哪个块
- 8至10:可能太多,如果代码内嵌的层次太多,就会使得代码很难阅读
- 4个空格:非常流行,范·罗萨姆支持的风格
· 缩进相同的一组语句构成一个代码块,称之为代码组
· 首行以关键字开始,以冒号:结束,该行之后的一行或多行代码构成代码组
· 如果代码组只有一行,可以将其直接写在冒号后面,但是这样的写法可读性差,不推荐
(2) 注释及续行
· 首要说明的是:尽管Python是可读性最好的语言之一,这并不意味着程序员在代码中就可以不写注释
· 和很多UNIX脚本类似,python注释语句从#字符开始
· 注释可以在一行的任何地方开始,解释器会忽略掉该行#之后的所有内容
· 一行过长的语句可以使用反斜杠\分解成几行
(3) 同行多个语句
· 分号; 允许你将多个语句写在同一行上
· 但是这些语句不能在这行开始一个新的代码块
· 因为可读会变差,所以不推荐使用
(4) 输出语句
· 获取帮助
>>> help(print)
· 使用方式
>>> print('Hello World!')
Hello World!
>>> print('Hello' + 'World!')
HelloWorld!
>>> print('Hello', 'World!')
Hello World!
>>> print('Hello', 'World!',sep='***')
Hello***World!
>>> print('Hello', 'World!',sep='***',end='123')
Hello***World!123
(5) 输入语句
· 获得帮助
>>> help(input)
· 使用方式( 注意,input的返回值一定是字符类型 )
>>> num = input("Number:")
Number: 20
>>> num + 10
Traceback (most recent call last):
File "", line 1, in
NameError: name 'number' is not defined
3.数据类型概述
(1) 数字
· 基本数字类型
类型 | 描述 |
---|---|
int | 有符号整数 |
bool | 布尔值(True为1,False为0) |
float | 浮点数 |
complex | 复数 |
· 数字表示方式
- python默认以十进制数显示
- 数字以0o或0O开头表示为8进制数
- 数字以0x或0X开头表示16进制数
- 数字以0b或0B开头表示2进制数
[root@myproxy ~]# cp /etc/hosts /tmp
[root@myproxy ~]# ll /tmp/hosts
-rw-r--r-- 1 root root 251 Sep 15 22:00 /tmp/hosts
>>> import os
>>> os.chmod('/tmp/hosts',600)
[root@myproxy ~]# ll /tmp/hosts
---x-wx--T 1 root root 251 Sep 15 22:00 /tmp/hosts
>>> os.chmod('/tmp/hosts', 0o600)
[root@myproxy ~]# ll /tmp/hosts
-rw------- 1 root root 251 Sep 15 22:00 /tmp/hosts
# Linux文件权限是8进制
(2) 序列对象
· 字符串
· 定义字符串
python中字符串被定义为引号之间的字符集合
python支持使用成对的单引号和双引号
无论单引号还是双引号,表示的意义是相同的
python还支持三引号(三个连续的单引号或者双引号),可以用来包含特殊字符
python不区分字符和字符串
# 多类型变量输出时使用占位符 name = 'tom' age = 20 "%s is %s years old." % ( name, age) # 三引号的使用可以保留用户的输入格式 >>> words = "hello\nwelcome\ngreet" >>> print(words) hello welcome greet ### 上面的可读性太差,使用三引号等价表达 ### >>> wds = '''hello ... welcome ... greet''' >>> print(wds) hello welcome greet >>> wds 'hello\nwelcome\ngreet'
· 字符串切片
· 使用索引运算符[]和切片运算符[ : ]可得到子字符串
· 第一个字符的索引是0,最后一个字符的索引是-1
· 子字符串包含切片汇总的起始下标,但不包含结束下标
>>> py_str = 'python'
>>> len(py_str)
6
>>> py_str[0]
'p'
# 负数表示从右往左取值
>>> py_str[-2]
'o'
>>> py_str[2:4]
'th'
>>> py_str[2:]
'thon'
>>> py_str[:4]
'pyth'
# 步长为2
>>> py_str[::2]
'pto'
>>> py_str[1::2]
'yhn'
· 字符串连接操作
· 使用+号可以将多个字符串拼接在一起
· 使用*号可以将一个字符串重复多次
>>> is_cool = 'is Cool'
>>> print(py_str + '' + is_cool)
pythonis Cool
>>> py_str * 2
'pythonpython'
· 列表和元组
· 定义列表
· 可以将列表当成普通的"数组",它能保存任意数量的任意类型的python对象
· 像字符串一样,列表也支持下标和切片操作
· 列表中的项目可以改变
>>> alist = [1, "tom", "alice"]
>>> alist[1] = 'bob'
>>> alist
[1, 'bob', 'alice']
· 列表操作
· 使用in或not in判断成员关系
· 使用append方法向列表中追加元素
>>> len(alist)
3
>>> alist + [100]
[1, 'bob', 'alice', 100]
· 元组的定义及操作
· 可以认为元组是"静态的列表"
· 元组一旦定义,不能改变
>>> atuple = (10, 20, 30, 'tom', 'jerry', 100)
>>> atuple[1]
20
>>> atuple[-1]
100
>>> atuple[2:4]
(30, 'tom')
>>> len(atuple)
6
>>> atuple[-1] = 10
Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment
# 报错,元组中元素不能改变
(3) 字典
· 字典的定义及操作
· 字典是由无序的键值对(key-value)构成的映射数据类型
· 通过键来取值,不支持下标操作
>>> adict = {'name': 'bob', 'age': 20}
>>> 'bob' in adict
False
>>> 'name' in adict
True
>>> adict['name']
'bob'
>>> adict
{'age': 20, 'name': 'bob'}
· 数据类型比较(重点)
· 按存储模型分类:
- 标量:数字、字符串
- 容器:列表、元组、字典
· 按更新模型分为
- 不可变:数字、字符串、元组
- 可变:列表、字典
>>> s1 = 'python'
>>> alist = [1, 2, 3]
>>> s1[0]
'p'
>>> alist[0]
1
>>> alist[0] = 10
>>> s1[0] = 'P'
Traceback (most recent call last):
File "", line 1, in
TypeError: 'str' object does not support item assignment
# 因为字符串不可变,所以报错,需要整体修改
>>> s1 = 'Python'
· 按访问模型分
- 直接:数字
- 顺序:字符串、列表、元组
- 映射:字典