读书笔记:《利用Python进行数据分析》之 Python 语言基础及特点

目录

语言语义

标量类型 


  • 语言语义

 1.使用缩进(tab或空格)组织代码

 由于不使用大括号来组织代码,单个代码块中所有的代码必须保持相同的缩进。

#一般使用四个空格作为默认缩进,且Python语句不以分号结尾,一个冒号代表一个缩进代码块的开始
for x in array:
    if x < pivot:
        less.append(x)
    else:
        greater.append(x)

2.对象模型一致性

Python语言中每一个数值、字符串、数据结构、函数、类、模块以及所有存在于Python解释器中的事物,都被当做对象来操作。 

#在Python中,对一个变量赋值(绑定)即创建了一个指向等号右边对象的引用,这种赋值数据的机制对于利用Python处理大数据集尤为重要

#下例中a, b指向了相同的对象
In[1]: a = [1, 2, 3]
In[2]: b = a
In[3]: a.append(4)
In[4]: b
out[1]: [1, 2, 3, 4]
#Python中的对象引用并不涉及类型,变量对于对象来说只是特定命名空间中的名称
In[1]: a = 5
In[2]: type(a)
out[1]: int
In[3]: a = 'foo'
out[2]: str

#Python是强类型语言即所有的对象都拥有指定的类型,隐式转换只在特定的情况下发生
In[5]: '5' + 5
#TypeError: must be str, not int

 3.鸭子类型

 只关心某个对象是否拥有某个特殊的方法而不关心它的具体类型。

isinstance函数检查一个对象是否是特定类型的实例,isiterable函数检查一个对象是否可以遍历。

#用例
In[1]: a = 5
In[2]: isinstance(a, (int, float))
out[1]: True
In[3]: isiterable('a string')
out[2]: True

#检查对象是否是一个列表,若不是就转换成列表
#list函数总是会创建一个新的对象(即拷贝而非引用)
if not isinstance(x, list) and isiterable(x):
    x = list(x)

 4.导入

#从另一个相同路径下的文件连接到例如module.py中的变量与函数
import module
result = module.function(5)
i = module.x

from module import function, x
result = function(x)

import module as md
from module import function as f, x as i
result = md.f(5)
result = f(i)

 5.可变和不可变对象

#列表、数组以及大多数用户定义的类型可变
In[1]: a = ['foo', 2, [4, 5]]
In[2]: a[2] = (3, 4)
In[3]: a
out[1]: ['foo', 2, [3, 4]]

#字符串、元组以及datetime日期方法不可变
In[1]: a = (3, 4, (2, 6))
In[2]: a[1] = 'foo'
#TypeError: 'a' object does not support item assignment
In[1]: a = 'this is a string'
In[2]: b = a.replace('string', 'long str')
In[3]: a
out[1]: 'this is a string'
  • 标量类型 

1.数值类型

str  ----> 字符串(包含Unicode)

None ----> null值

int ----> 任意精度无符号数

bool ----> True or Flase

float ----> 双精度64位浮点数值

bytes ----> ASCII字节

2.字符串、字节与Unicode

字符串可用 ' ' 或 '' '' 来书写,多行字符串可使用 ' ' ' 或 '' '' '' 来书写。

#字符串中书写反斜杠需要将其转义
In[1]: a = '12\\34'
In[2]: print(a)
out[1]: 12\34

#用前缀符号r表明含大量反斜杠但不含特殊符号的字符串中的字符是原生字符
In[1]: a = r'this\has\no\special\characters'
In[2]: a
out[1]: 'this\\has\\no\\special\\characters'

#format方法代替字符串中的格式化参数
#{0:.2f} 第一个参数格式化为2位小数的浮点数
#{1:s} 第二个参数格式化为字符串
#{2:d} 第三个参数格式化为整数
In[1]: temp = '{0:.2f} {1:s} are worth US ${2:d}'
In[2]: temp.format(4.556, 'Pesos', 1)
out[1]: '4.56 Pesos are worth US $ 1'

#知字符编码可转换为Unicode
str_字节类型 = str.encode('<字节类型>')
str = str_字节类型.decode('<字节类型>')

3.日期和时间 

Python内建datetime模块提供了datetime、data和time类型。

In[1]: dt = datetime(2011, 10, 29, 20, 30, 21)
In[2]: dt.date()
out[1]: datetime.date(2011, 10, 29)
In[3]: dt.time()
out[2]: datetime.date(20, 30, 21)

#strftime方法将datetime转换为字符串
In[4]: dt.strftime('%m/%d/%Y %H:%M')
out[3]: '10/29/2011 20:30'

#strptime方法将字符串转换为datetime
In[5]: datetime.strptime('20091031', '%Y%m%d')
out[4]: datetime.datetime(2009, 10, 31, 0, 0)

#两个不同的datetime会产生datetime.timedelta类型的对象
In[6]: str = datetime(2011, 11, 15, 22, 30)
In[7]: delta = str - dt
In[8]: delta
out[5]: datetime.timedelta(17, 7179)  #时间间隔为17天又7179秒

4.控制流 

#if语句
if x < 0:
    print('')
elif x == 0:
    print('')
else:
    pass   #不执行任何操作或作为代码占位符

#for语句
array = [1, 2, None, 4]
for value in array:
    if value is None:
        continue
    total1 += value
for value in array:
    if value is None:
        break
    total2 += value

#range函数
#以起始、结尾、步进传参给range函数,返回迭代器,该迭代器生成等差整数序列(包含起始但不包含结尾)
In[1]: list(range(5, 0 ,-1))
out[1]: [5, 4, 3, 2, 1]

#三元表达式
value = true-expr if condition else false-expr
In[1]: 'Non-negative' if x >= 0 else 'Negative'
out[1]: 'Non-negative'

 

你可能感兴趣的:(读书笔记:《利用Python进行数据分析》之 Python 语言基础及特点)