对象组成:id标识(identity)、类型(type)、value(值)
本质:一个内存块,拥有特定的值,支持特定的相关操作
对象组成:id标识(identity)、类型(type)、value(值)
本质:一个内存块,拥有特定的值,支持特定的相关操作
Python程序由模块组成,模块由语句组成
ctr+s时刻保存一下,形成习惯
别乱用缩进,一般用“四个空格"——tab制表符
\行连接符,用于连接太长的行(将两行连接起来)
python 开发环境
IDE——开发环境(解释器)常见的有
1.IDLE 2.Pycharm 3.wingIDE 4.Eclipse 5.IPython
解释型、面向对象 的语言;
1989年发明,比java要老;
Python介绍
1.
字符串驻留:
描述:仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。
Python支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线、字母和数字)会启用字符串驻留机制
ord():把字符串转换成对应的Unicode码
chr():把十进制数字转换成对应的字符
同一运算符:用于比较两个对象的存储单元,实际比较的是对象的地址
is:判断两个标识符是不是引用同一个对象,常用于与None比较
is not:判断两个标识符是不是引用不同对象
is与==的区别:
is用于判断两个变量引用对象是否为同一个,即比较对象的地址
==用于判断两个变量引用的对象的值是否相等
整数缓存问题:
python仅仅对比较小的整数对象进行缓存([-5, 256]),这仅仅是在命令行中执行,而在Pycharm或者保存为文件执行,解释器做了一部分优化([-5, 任意正整数])
round():四舍五入
divmod():同时得到商和yu'shu
数据分析的流程:
常量:不变化的量,python不支持常量,即没有语法规则限制改变一个常量的值
变量:存放在栈中,存储的是对象的地址
对象的本质:一个内存块,拥有特定的值,支持特定类型的相关操作
类名首字母大写
常量全大写、下划线
其他命名全小写、下划线
返回值
return 返回值要点:
1. 如果函数体中包含return 语句,则结束函数执行并返回值;
2. 如果函数体中不包含return 语句,则返回None 值。
3. 要返回多个返回值,使用列表、元组、字典、集合将多个值“存起来”即可。
def my_avg(a,b):
return (a+b)/2
def test(x,y,z)
return [x*10,y*10,z*10]
print(test(1,2,3))
形参和实参
def printMax(a,b):
'''实现两个数的比较,并返回较大的值'''
if a>b:
print(a,'较大值')
else:
print(b,'较大值')
printMax(10,20)
printMax(30,5)
执行结果:
20 较大值
30 较大值
上面的printMax 函数中,在定义时写的printMax(a,b)。a 和b 称为“形式参数”,
简称“形参”。也就是说,形式参数是在定义函数时使用的。形式参数的命名只要符合“标
识符”命名规则即可。
在调用函数时,传递的参数称为“实际参数”,简称“实参”。上面代码中,
printMax(10,20),10 和20 就是实际参数。
文档字符串(函数的注释)
我们通过三个单引号或者三个双引号来实现,
def print_star(n):
'''根据传入的n,打印多个星号'''
print("*"*n)
help(print_star)
我们调用help(函数名.__doc__)可以打印输出函数的文档字符串。执行结果如下:
Help on function print_star in module __main__:
print_star(n)
根据传入的n,打印多个星号
Python 函数的分类
Python 中函数分为如下几类:
1. 内置函数
我们前面使用的str()、list()、len()等这些都是内置函数,我们可以拿来直接使用。
2. 标准库函数
我们可以通过import 语句导入库,然后使用其中定义的函数
3. 第三方库函数
Python 社区也提供了很多高质量的库。下载安装这些库后,也是通过import 语句导
入,然后可以使用这些第三方库的函数
4. 用户自定义函数
用户自己定义的函数,显然也是开发中适应用户自身需求定义的函数。今天我们学习的
就是如何自定义函数。
函数的定义和调用
def 函数名([参数列表]) :
'''文档字符串'''
函数体/若干语句
要点:
1. 我们使用def 来定义函数,然后就是一个空格和函数名称;
(1) Python 执行def 时,会创建一个函数对象,并绑定到函数名变量上。
2. 参数列表
(1) 圆括号内是形式参数列表,有多个参数则使用逗号隔开
(2) 形式参数不需要声明类型,也不需要指定函数返回值类型
(3) 无参数,也必须保留空的圆括号
(4) 实参列表必须与形参列表一一对应
3. return 返回值
(1) 如果函数体中包含return 语句,则结束函数执行并返回值;
(2) 如果函数体中不包含return 语句,则返回None 值。
4. 调用函数之前,必须要先定义函数,即先调用def 创建函数对象
(1) 内置函数对象会自动创建
(2) 标准库和第三方库函数,通过import 导入模块时,会执行模块中的def 语句
我们通过实际定义函数来学习函数的定义方式。
推导式创建序列
推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合,
从而避免冗长的代码。
列表推导式
列表推导式生成列表对象,语法如下:
[表达式for item in 可迭代对象]
或者:{表达式for item in 可迭代对象if 条件判断}
>>> [x*2 for x in range(1,20) if x%5==0 ]
[10, 20, 30]
>>> [a for a in "abcdefg"]
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> cells = [(row,col) for row in range(1,10) for col in range(1,10)]
字典推导式
{key_expression : value_expression for 表达式in 可迭代对象}
类似于列表推导式,字典推导也可以增加if 条件判断、多个for 循环。
>>> my_text = ' i love you, i love sxt, i love gaoqi'
>>> char_count = {c:my_text.count(c) for c in my_text}
>>> char_count
{' ': 9, 'i': 4, 'l': 3, 'o': 5, 'v': 3, 'e': 3, 'y': 1, 'u': 1, ',': 2, 's': 1, 'x': 1, 't': 1, 'g': 1, 'a': 1, 'q': 1}
集合推导式
集合推导式生成集合,和列表推导式的语法格式类似:
{表达式for item in 可迭代对象}
或者:{表达式for item in 可迭代对象if 条件判断}
>>> {x for x in range(1,100) if x%9==0}
{99, 36, 72, 9, 45, 81, 18, 54, 90, 27, 63}
生成器推导式(生成元组)
很多同学可能会问:“都有推导式,元组有没有?”,能不能用小括号呢?
>>> (x for x in range(1,100) if x%9==0)
<generator object <genexpr> at 0x0000000002BD3048>
我们发现提示的是“一个生成器对象”。显然,元组是没有推导式的。
一个生成器只能运行一次。第一次迭代可以得到数据,第二次迭代发现数据已经没有了。
>>> gnt = (x for x in range(1,100) if x%9==0)
>>> for x in gnt: #生成器是可迭代对象
print(x,end=' ')
9 18 27 36 45 54 63 72 81 90 99
>>> for x in gnt:
print(x,end=' ')
>>>