1. if
1.1 简介
if 条件测试1 :
条件测试1为True 后执行的
elif 条件测试2 :
条件测试2为True 后执行的
else :
条件1和条件2都为False时执行的
tuples = ('a', 'b', 'c', 'd')
for data in tuples:
if data == 'c':
print(data)
elif data == 'd':
print(data)
else:
print('no')
1.2 条件测试
条件测试区分大小写。如果不在意大小写可以将变量值转换为小写 x.lower()
Python2不支持 True和False,只有0和1。Python3支持。
1. 等于、不等于、大于、小于、大于等于、小于等于
==、!=、>、<、>=、<=
2. 检查多个条件, and与、or或
3. 检查特定值是否在列表中
tuples = ['a', 'b', 'c', 'd']
if 'a' in tuples:
print('yes')
else:
print('no')
4. 确定列表不是空的
tuples = []
if tuples:
print('yes')
else:
print('no')
2. for
for循环用于遍历一个迭代对象的所有元素。循环内的语句段会针对迭代对象的每一个元素项目都执行一次。
for test_str in ['are', 'you', 'ok', '?']:
print(test_str) # 打印 are you ok ?
for i in range(4):
print(i) # 打印 0、1、2、3
else
Python中的for循环可以选择是否关联一个else子句。在for循环完成才会执行此else子句。
else子句是可选的秒如果没有else子句,for循环完成后会顺序执行后面的语句。
for test_str in ['are', 'you', 'ok', '?']:
print(test_str) # 打印 are you ok ?
else:
print('Yes')
break
break表示立即跳出当前整个for循环,包括else子句中的动作也不会执行。
for test_str in ['a', 'b', 'c', 'd']:
if test_str == 'b':
print('found')
break
else:
print('not found in test_str[]')
# 打印 found
continue
3. while
else
while循环执行完成后会执行一次else下的语句块。
break
结束当前整个循环,包括else下的语句块都不执行。
continue
跳出当前迭代,执行下一个迭代。
4. 用户输入 intput
基础用法
提示输入,intput的返回值就是字符串。
a = input('输入字符串')
print(a)
print('类型是 ', type(a)) # 类型是 str
结合 int(),将字符串转为 int类型
a = int(input('输入数字'))
print(a)
print('类型是 ', type(a)) # 类型是 int
结合 float(),将字符串转为 int类型
a = float(input('输入数字'))
print(a)
print('类型是 ', type(a)) # 类型是 float
5. 注释
# 注释
# 行尾的注释,在代码后面加两个空格再 #
'''
多行注释用 三个引号 ''' '''
'''
6.函数
6.1 创建函数
def function_name(parameters):
''' docstring '''
函数体
return
1)关键字def,表示函数头的开始
2)function_name 函数名字
3)parameters 函数参数
4)冒号标记函数头的结束
5)docstring 描述函数功能的文档字符串
6)函数体,语句必须具有相同的缩进级别
7)可选的return语句
6.2 函数参数
6.2.1 实参和形参
def func_test(test_para):
print('test_para:', test_para)
return
a_str = input('输入字符串')
func_test(a_str)
函数中定义的参数是形参,上列中的 test_para;
调用函数时实际传递给函数的值是实参,上列中的 a_str ;
6.2.2 传递实参
1)位置实参
调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此,最简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参 。
def func_test(para_name, pare_work):
print('', para_name, pare_work)
return
a_str = input('name 输入字符串')
b_str = input('work 输入字符串')
func_test(a_str, b_str)
2)关键字实参
关键字实参是传递给函数的 名称—值对,直接在实参中将名称和值关联起来了,无需考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个值的用途。
def func_test(para_name, pare_work):
print('', para_name, pare_work)
return
func_test(para_name = 'abc', pare_work = 'edf')
6.2.3 默认值
编写函数时,可给每个形参指定默认值 默 。在调用函数中给形参提供了实参时,Python将使用指定的实参值;否则,将使用形参的默认值。因此,给形参指定默认值后,可在函数调用中省略相应的实参。使用默认值可简化函数调用,还可清楚地指出函数的典型用法。
def func_test(para_name='abc', pare_work='edf'):
print('', para_name, pare_work)
return
func_test()
6.2.4 列表做实参
list_test = ['abc', 'edf']
def func_test(names):
print('', names[0], names[1])
return
func_test(list_test)
在函数中修改列表
list_test = ['abc', 'edf']
def func_test(names):
names[0] = '123'
print('', names[0], names[1]) # 打印 123 edf
print('', list_test[0], list_test[1]) # 打印 123 edf
return
func_test(list_test)
禁止在函数中修改列表
可向函数传递列表的副本而不是原件;这样函数所做的任何修改都只影响副本,而丝毫不影响原件。切片表示法[:] 创建列表的副本。
list_test = ['abc', 'edf']
def func_test(names):
names[0] = '123'
print('', names[0], names[1]) # 打印 123 edf
print('', list_test[0], list_test[1]) # 打印 abc edf
return
func_test(list_test[:])
6.2.5 任意数量的实参,元组做形参
Python允许函数从调用语句中收集任意数量的实参,形参名中的星号(*)让Python创建一个名为此形参的空元组,并将收到的所有实参都放在这个元组中。
def func_test(*names):
print('', names, type(names)) ## ('a', 'b', 'c') <class 'tuple'>
for a in names:
print(a)
return
func_test('a', 'b', 'c')
6.2.6 位置方式传递实参+任意数量实参,元组做形参
def func_test(size, *names):
print('', size, names, type(names)) ## 3 ('a', 'b', 'c') <class 'tuple'>
for a in names:
print(a)
return
func_test(3, 'a', 'b', 'c')
6.2.7 关键字方式传递实参+任意数量实参,字典做形参
形参名中的星号(**)让Python创建一个名为此形参的空字典,并将收到的所有实参都放在这个元组中。
def func_test(num, size, **names):
print('', size, names, type(names)) ## 3 {'name': ('a', 'b', 'c')} <class 'dict'>
return
func_test(num=1, size=3, name=('a', 'b', 'c'))
6.3 返回值
函数可返回任何类型的值,包括列表和字典等较复杂的数据结构。
6.4 函数变量作用域
定义在函数内部的局部变量只在函数内部生效
a = '123'
def func_test():
a = 'abc'
print(a) # abc
return
func_test()
print(a) # 123
7.模块 module
7.1 简介
Python的模块 (module) 是一个后缀为.py的文件,文件中包含Python的定义和语句。
封装路线:函数、类、模块、包、项目
7.2 模块的引入
一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。
1) 导入整个模块 import
import 模块名 导入模块,后续采用 模块名.函数名 使用模块的函数。
2) 导入模块中的指定内容 from … import
from modname import name1[, name2[, … nameN]]
# 导入模块内所有名称
from fibo import *
3) 模块别称 as
模块名后使用 as 时,直接把 as 后的名称与导入模块绑定,相当于给模块起了一个别称。
import fibo as fib
fib.fib(500)
from fibo import fib as fibonacci
fibonacci(500)
4) 重新加载模块 reload
reload() 用于重新载入之前载入的模块。
为了保证运行效率,每次解释器会话只导入一次模块。如果更改了模块内容,必须重启解释器;
import importlib
importlib.reload(modulename)
5) 模块的搜索路径
当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
1.当前文件所在的目录
2.如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
3.如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
sys.path本质上是一个列表,可以通过操作列表的方式去新增和删除路径。
import sys
print(sys.path) # 查看sys.path
# 插入路径
sys.path.insert(0, "D:\\Program Files (x86)\\python\\home\\test")