第二章 Python语法 和 jupyter基础
常用库及命名
下面均为各种库的常用命名方式
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import statsmodels as sm
data = {i : np.random.randn() for i in range(7)} # 类似于python字典生成式
data
结果
{0: -0.9009056139906951,
1: -1.581682352812691,
2: -0.5608536001755129,
3: -1.2634011018284566,
4: 0.4831433069203416,
5: -0.2650450765907828,
6: -0.7770227536257971}
%pwd #打印当前路径
'D:\\Python\\datalearning\\Python for data analysis'
补全功能
- 补全功能是下拉形式
- 定义变量和
Python
关键字补全 - 创建对象的方法和属性的补全
- 模块的补全
- 文件路径补全
- 补全函数的关键词参数,包含等号
an_apple = 27
an_orange = 42
an # 按下tab键会自动补全
image.png
b = [1, 2, 3]
b. # 按下tab键,补全对象b的各种方法和属性
image.png
import datetime
datetime. # 按下tab键
image.png
"D://python/datalearning/Python for data analysis" # 路径补全
自省
使用问号?
可以进行自省功能
- 变量自省
- 函数或者实例自省
b = [1, 3, 4]
b?
image.png
def add_number(a, b):
return a + b
add_number? # 一个问号:显示相关属性
add_number?? # 两个问号:显示源码
image.png
image.png
?问号的另一个功能:配合字符串匹配所有的名字
np.*load*? # 星号代表所有,问号代表匹配
image.png
魔术命令
魔术命令是指在命令前面加上%
前缀
-
%magic?
查看某个命令的用法 -
%run
:用来所有的Python
程序,也就是.py
文件:%run hello.py
-
%load
:将py文件导入一个代码格中 -
%paste
:直接运行剪贴板中的代码 -
%cpaste
:可以粘贴任何一条代码,在输入结束命令之前都不会执行代码,输入--
按回车或者使用Ctrl-D
停止粘贴代码,停止粘贴代码后会执行代码
%pwd
'D:\\Python\\datalearning\\Python for data analysis'
%run test.py # 直接运行py文件
xiaoming
the age is 28
180
the boy`s hair yellow
- load test.py:将文件导入代码格中
# %load test.py
#!/user/bin/env python
# user:peter
class Person:
def __init__(self, name): # 初始化方法
self.name = name # 定义一个属性name的值是name
def age(self, n): # age方法必须传入一个参数
return "the age is {}".format(n)
class Boy:
height = 180
def color(self):
return "the boy`s hair yellow"
class TallBoy(Person, Boy):
pass
if __name__ == "__main__":
boy = TallBoy("xiaoming")
print(boy.name)
print(boy.age(28))
print(boy.height)
print(boy.color())
结果
xiaoming
the age is 28
180
the boy`s hair yellow
快捷键说明
image.pnga = np.random.randn(100, 100)
%timeit np.dot(a, a) # 计算执行时间
156 µs ± 41.7 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
%debug?
自动魔术:魔术函数默认不需要百分号,只要没有变量和函数名相同,用%atuomagic
打开或者关闭
foo = %pwd # 当做变量进行赋值
foo
'D:\\Python\\datalearning\\Python for data analysis'
image.png
%matplotlib #运行魔术命令,进行配置
Using matplotlib backend: TkAgg
%matplotlib inline # 绘图中这句话一定要导入
import matplotlib.pyplot as plt
plt.plot(np.random.randn(50).cumsum())
[<matplotlib.lines.Line2D at 0x25411171ba8>]
image.png
Python
语言特点
Python
语言具有如下特点:
- 特点是:可读型强、简洁、清晰
- 缩进使用括号,最好用4个空格
- 冒号标志着缩进代码块的开始
- 万物皆对象,对象有自己的属性和方法
- 动态类型,强引用
a = 5
isinstance(a, int) # True
a, b = 4, 5.5
isinstance(a, (int, float)) # 通过元组的形式判断,对象类型是否在元组中 True
鸭子类型
- 不关心对象的类型,只关心对象是否具有某些方法或者用途,例如通过验证一个类型是否遵循迭代协议,判断它是否可迭代
__iter__
方法 - 更好的判断方法是:
iter
函数
def isiterable(obj): # 判断某个对象是否是可迭代的
try:
iter(obj)
return True
except TypeError: # not iterable
return False
isiterable(" hello python") # True
isiterable(5) # False
# 下面实现检验对象是否是列表或者numpy数组,如果不是转成列表:
if not isinstance(x, list) and isiterable(x): # 判断是否是列表且对象是可迭代
x = list(x) # 转成列表形式
模块引入
在Python中模块就是.py扩展名和包含Python代码的文件
# some_module.py
PI = 3.14159 # 模块的变量PI
def f(x): # 模块的两个函数即方法
return x + 2
def g(a, b):
return a + b
如何调用
import some_module # 导入文件
result = some_module.f(5) # 模块的属性,并且传入一个参数
pi = some_module.PI
# 或者另一种导入方式
from some_module import f, g, PI
result = g(5, PI)
# 还可以使用as起别名
import some_module as sm
from some_module import PI as pi, g as gf
r1 = sm.f(pi)
r2 = gf(6, pi)
标量类型
Python的标准库中有一些内建的类型,用以处理数值数据、字符串、布尔值和日期时间等,这种单值 类型称之为标量类型。常用的标量如下:
类型 | 作用 |
---|---|
None | python的空值,只存在一个None对象的实例 |
str | 字符串类型 |
bytes | 原生ASCII字节 |
float | 双精度64位浮点数 |
bool | True或者False |
int | 任意精度的整数 |
网友评论