python基础(一)
(记录小白学习过程,自己啥时候忘了啥可以翻翻)
1 语言语义
python侧重于可读性,易用性及清晰性
1.1 缩进
1)python中使用缩进来组织代码,且一个冒号代表一个代码块的开始。(四个缩进是标准形式)
2)python语句都不是以分号结尾,但是分号可以用在一行里将多条语句之间进行分隔(最好不要写一行吧,会降低可读性)
a = 5; b = 6; c = 7
1.2 注释
可以这样:
#当前保持行为空
if len(line) == 0
也可以:
print("Reached") #简单的报告
1.3 变量和参数传递(*)
假设我们有这样一段代码:
a = [1,2,3]
b = a #将a赋值给新变量b
注意:这里不是数据[1,2,3]被拷贝的过程,而是指向了同一个对象,假设你在a中添加一个元素,然后检查b会发现b中多了刚添加的元素
赋值也称绑定,这是因为我们将一个变量名绑定到了一个对象上。
当你将对象作为参数传给一个函数时,指向原始对象的新的本地变量就会被创建而无须赋值。(?)
1.4 动态引用、强类型
1)python中的对象引用并不涉及类型
a = 5
type(a)
# 会输出 int
a = 'foo'
type(a)
# 会输出 str
变量对于对象中只是特定命名空间中的名称;类型信息是存储在对象自身当中的,但是!python不是“非类型化语言”,是有类型区分的。所有的对象都拥有一个指定的类型,隐式的转换不会自然发生,只在特定,明显的情况下发生
可以用isinstance函数来检查一个对象是否是特定类型的实例
a = 5
instance(a, int)
# out: true
isinstance支持一个包含类型的元组,可以检查对象的类型是否在元组中的类型中
a = 5; b = 4.5
isinstance(a,(int, float))
# out: true
1.5 导入
在python中,模块就是以.py为后缀名并包含python代码的文件。
假设有如下代码
# some_module.py
PT = 3.14159
def f(x):
return x + 2
def g(a,b):
return a + b
若想从另一个相同路径下的文件连接到some_module.py中定义的变量和函数,我们可以这样做:
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 soome_module as sm
from some_module import PI as pi, g as gf
r1 = sm.f(pi)
r2 = gf(6, pi)
1.6 二元运算符和比较运算
二元运算没什么好说的
这部分有需要注意的:
1)is关键字可以检查两个引用是否指向同一个对象,同理存在is not
2)list函数可以建立一份拷贝
c = list(a)
a is not c
#out: false
1.7 可变对象和不可变对象
python中的大部分对象都是可变对象,例如**列表,字典, NumPy数组
a_list = ['foo',2,[4,5]]
a_list[2] = (3,4)
a_list
# out: ['foo', 2, (3, 4)]
但字符串,元组不能变
2 标量类型
2.1 数值类型
基础的就是int和float
注意:
1)整数除法会自动转化成浮点数
2)如果要去除小数部分,则用**//**
2.1 string
(1)多行用三引号,单行单引号或双引号都可以
(2)可以用count()计算
(3)string是不可以直接被更改的
(4)但是可以用replace替换后赋值给另一个变量
a = 'this is a string'
a[10] = 'd' #error
b = a.replace('string','longer string')
#此时a不变,b是希望得到的string
注意:1)类别转换是这样的:
a = 4.1
s = str(a)
2)可以是list
s = 'python'
list(s)
#['p', 'y', 't', 'h' ...]
3)字符串可以相加
2.2 date and time
from datetime import datetime, date, time
dt = datetime(2011, 10, 29, 20, 30, 21)
dt.strftime('%m/%d/%Y %H:%M') #把time转化成str的形式
#out: '10/29/2011 20:30'
(先记这么多,未完待续)