@pluto-the-lost
2020-10-16T00:11:16.000000Z
字数 4373
阅读 44
从零开始的Python
这里假设安装了Anaconda,菜单栏里会多出一个叫spyder的程序,打开以后是这样
(注意我这是很久以前下的,所以还是Python2.7,现在2.x已经停止维护了,至少也要下3.x,最好下个3.8+,不过界面都一样)
界面分为三块区域,
相当简单,不需要声明,直接赋值就可以
a = 1 # 数字
b = a
c = '123' # 单引号/双引号框起来表示字符串,也就是文本
d = b+a
e = f = True # True/False表示真/假的逻辑值,在分支判断里用得多
在变量观察区可以看到结果是这样
Btw,在Python里“#”号是单行注释,也就是井号后面的内容都不会被执行,只是方便读代码的人理解
因为没有提前声明变量的类型,赋值时也不用考虑变量类型的兼容性,会直接覆盖掉原先的变量,比如
a = 1
a = '123' # 这时a的值是字符串'123'
python的变量名可以是大小写字母、数字和下划线的组合,但是数字不能作为开头(下划线开头虽然语法上允许,但是也不要用,之后会说它有特殊含义)。对于名字很长的变量,一般用下划线把单词隔开,也可以用大小写字母来区分
a = 1
_aA1 = 1
WhoLovesDiandian = 'xiangxiang'
who_loves_xiangxiang = 'diandian'
普通的加减乘除自然没什么问题
1+1-2*3/5 # 四则运算,注意是符合运算顺序的噢(有些语言是从左到右),这里返回0.8
1 // 2 # 整除取整,这里返回0
1 % 2 # 整除取余,这里返回1
2 ** 5 # 幂次运算,这里返回32
‘123’ + ‘456’ # 字符串相加是直接拼接,这里返回‘123456’
逻辑运算是这样的,这里的"and", "or", "not" 就是逻辑运算符,
a = True
b = False
a and b # 与运算,and前后都是True才返回True,否则返回False,这里返回False
a or b # 或运算,有一个是True就返回True
not a # 非运算,把False编程True,把True变成False
# and和&通用,or和|通用(shift+顿号),不过一般用and和or增加可读性
c = 1
d = 2
c == d # 判断是否相等,这里返回False
c != d # 判断是否不等,这里返回True
c <= d # 判断是否小于等于
c < d # 判断是否严格小于
还有一些赋值运算符,四则运算和幂次运算都可以改成赋值运算,但是这些少用,省不了多少事情,只会增加读代码的难度
a = 1
a += 1 # 等价于 a = a + 1
a *= 2 # 等价于 a = a * 2
这里的输出指打印到控制台,输出到文件的之后再说。最简单的就是print函数了
print('521') # print接受一个字符串,输出出来
print('who loves diandian?', 'xiangxiang!') # 接受多个字符串,中间加上空格按顺序输出
print('say sth?', 521) # 输入数字也是可以的,会自动转换成字符串
不要在意这个In[编号],这些代码不一定是按顺序跑的。
有时候会想要输出一个未定的变量:
days_from_together = 19
print('we have been together for '+str(days_from_together)+' days') # 利用字符串拼接
# or
print('we have been together for %d days' %days_from_together) # 这个特性叫“格式化”
结果是这样
Python的条件判断没有其他语言那些花里胡哨的,就是if-else
meeting_on_weekend = False
healthy_on_weekend = True
if meeting_on_weekend:
print("GuGuGu")
elif healthy_on_weekend:
print("IKEA with diandian")
else:
print("抱紧我的小被子")
Python的if-else是判断出一个True,进入那个分支以后就不会对下面的分支进行判断了,所以后面甚至可以写一些会报错的东西(反正也不会执行)。
a = None
if not a:
print('please give "a" a value')
elif a+1==0:
print(a+1)
None作为一个空值,是不能参与运算的,所以a+1这里会报错,但是上面这段代码能够正常运行,因为根本没有执行elif后面的代码
【这里注意一点】python里判断“代码块”的起始与结束是通过【缩进】。如果if进入一个分支,分支中包含的代码是if语句下方具有相同缩进的代码,举个例子
a = False
if a:
b = 1
print(123)
c = a + b # 这行以上的三句都不会运行
d = True # 这句缩进复原了,所以不属于if的代码块,会运行
不仅是if-else体系,后面提到的循环、函数、类都是相似的逻辑,用“缩进”来表示一个代码块的起始和结束。
当然代码块可以嵌套
a = b = True
if a:
print('a is True')
if not b:
print('b is False')
c = 1 # 不会运行
d = 1 # 会运行
缩进一般有两种打法,一是按一下制表符(Tab),二是敲四次空格。严格的程序开发标准应该是敲空格(因为跨平台兼容性好,空格到哪里都是空格,制表符就不一定),但是实在太麻烦了,我一般都敲Tab。有一些IDE可以设置敲一次Tab等于敲四次空格,不过spyder好像不行。
Python的循环有两种,for循环和while循环
for i in [1,2,3,4,5]:
print(i)
while i<5:
print(i)
i = i + 1
循环内可以跳过本轮或终止该循环,分别用continue和break语句
for i in [1,2,3,4,5]:
if i==3:
continue # 这样i=3的时候会跳过下面的print,只会打印1,2,4,5
print(i)
while i<5:
if i==3:
break # 这样i=3的时候会直接终止这个循环,只会打印1,2
print(i)
i = i + 1
# 思考一下:如果这里的break换成continue会出现什么情况
注释是对代码功能和预期输出进行说明的文字,是为了让自己和别人都能看懂代码,注释部分的内容是不运行的。写稍微复杂一点的程序一定要写注释,不然十分钟后你回头看刚才的代码就会怀疑人生
前面我们已经说过了井号后面接的是单行注释,python也可以有多行注释,有两种方法
#days_from_together = 19
#print('we have been together for '+str(days_from_together)+' days')
## or
#print('we have been together for %d days' %days_from_together)
"""
days_from_together = 19
print('we have been together for '+str(days_from_together)+' days')
# or
print('we have been together for %d days' %days_from_together)
"""
依赖包是装在Python环境里的,要调用一个包首先要安装它,怎么安装后面再说。安装好以后,用 import 调用。依赖包一般是一系列类和函数的定义,调用以后就可以直接用点点号(.)调用里面定义好的类和函数了
import datetime
d1 = datetime.datetime.strptime('2020-09-25', '%Y-%m-%d')
d2 = datetime.datetime.now()
days_from_together = (d2-d1).days
print('we have been together for '+str(days_from_together)+' days')
可以看到依赖包又有它的依赖包,所以常常要调用好多层才能看到我们真正想要的函数,可以用 from...import... 使它简洁一点
from datetime import datetime
d1 = datetime.strptime('2020-09-25', '%Y-%m-%d')
d2 = datetime.now()
days_from_together = (d2-d1).days
也可以用 import...as... 使它短一点,比较方便打字
from datetime import datetime as dt
d1 = dt.strptime('2020-09-25', '%Y-%m-%d')
d2 = dt.now()
days_from_together = (d2-d1).days
为了代码的通用性,import...as... 尽量少用。不过有一些大家约定俗成的缩写,咱们如果用到这些包最好也这么用,不然复制人家的代码下来都跑不动
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import torch.nn as nn
import torch.nn.functional as F
【待续】
现在你已经完全掌握了python的常用语法,快去编写一个自己的项目吧!