python 一切皆对象。
shell 终端,设置环境变量
$ PATH=$PATH:/usr/local/python3/bin/python3
$ python3 --version
- 命令行方式:在 Linux 终端,输入 python 或 ipython 进入
- 程序方式:例如写一个 hello.py 文件,执行
python hello.py
- 脚本方式:修改文件为可执行文件,
python +x hello.py
;然后执行./hello.py
#!/usr/bin/env python3
print('Hello, World!')
Python3 中有六个标准的数据类型:
- number(数字)
- string(字符串)
- list(列表)
- tuple(元组)
- set(集合)
- dictionary(字典)
- int, float, bool, complex 四种基本类型,用于存储数值
- 内置函数 type(), 用以查询变量的类型
1.变量为什么不需要声明类型?
2.变量怎么回收?
3.内置函数 type() 与 isinstance() 区别
type() 不会认为子类是一种父类类型,isinstance() 认为子类是一种父类类型。
class A:
pass
class B(A):
pass
isinstance(A(), A) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False
#!/usr/bin/env python3
str1 = 'Hello'
print(str1[0])
- 字符串需要用单引号 ' ' 或双引号 " " 括起来
- 字符串也是一种特殊的元组。不能改变字符串中的某个元素的值
#!/usr/bin/env python3
list1 = [True, 1, 'Hello']
print(list1)
- list 的数据项可以不同类型
- list 的各个元素可以改变
- list 是使用 [ ] 方括号包含各个数据项
#!/usr/bin/env python3
tuple1 = (True, 1, 'Hello')
print(tuple1)
- tuple 是使用 ( ) 小括号包含各个数据项
- tuple 与 list 的唯一区别是 tuple 的元素是不能修改,而 list 的元素可以修改
类似 C++ STL unordered_set
- set 是一个无序不重复元素的序列
- 使用大括号 { } 或者 set() 函数创建集合
- 用 set() 创建一个空集合
- 使用 set 可以去重
#!/usr/bin/env python3
set1 = {'me', 'you', 'she', 'me'}
print(set1)
1.怎么理解 tuple, list 是有序的序列,而 set 是无序的序列
tuple 或 list 的定义元素顺序和输出一样,而 set 不是。
类似 C++ STL hash_map
- 字典的每个元素是键值对,无序的对象集合
- 字典是可变容器模型,且可存储任意类型对象
- 字典可以通过键来引用,键必须是唯一的,但值则不必
- 字典是使用 { } 大括号包含键值对
- 创建空字典使用 { }
#!/usr/bin/env python3
dict1 = {'name': 'steve', 'age': 18}
print(dict1)
1.返回 True 和 False 的问题?
数字 0 是 False,其他都是 True。
字符 "" 是 False,其他都是 True。
2.is 和 == 区别?
is
用于判断两个变量引用对象是否为同一个, ==
用于判断引用变量的值是否相等。
判断两个标识符是否引用同一个对象:is, is not
3.逻辑运算符
and, or, not
4.成员运算符
判断是否在指定的序列:in, not in
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
python 中没有 switch ... case
语句。
for 循环
for 元素 in 序列:
statement
for 循环使用 else 语句
# 如果 else 语句和 for 循环语句一起使用,else 语句块只在 for 循环正常终止时执行。
for 元素 in 序列:
statement
else:
statement
while 循环
while 条件:
statement
while 循环使用 else 语句
# 如果 else 语句和 while 循环语句一起使用,则当条件变为 False 时,则执行 else 语句。
while 条件:
statement
else:
statement
中断循环:break 或 continue,与 C/C++ 功能一样。
pass 语句:空语句,不做任何事情,保证程序结构完整性,防止语法错误。
python 没有 do...while 循环。
def 函数名(参数列表):
函数体
- 不可变对象:string,number,tuple
- 可变对象:list,dict
- 不定长参数:加了星号
*
的变量名会存放所有未命名的变量参数 - 使用 lambda 来创建匿名函数
- 默认参数必须放到最后
sum = lambda arg1, arg2: arg1 + arg2
print(sum(10, 20))
变量的作用域:
- L (Local) 局部作用域
- E (Enclosing) 闭包函数外的函数中
- G (Global) 全局作用域
- B (Built-in) 内建作用域
以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。
当内部作用域想修改外部作用域的变量时,就要用到 global 关键字。
要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字。
#!/usr/bin/env python3
def who(name):
print(name)
who(name = 'steve')
重点:函数