Types
python可以自己推断,布尔类型True和False是大写的
name = input("Name:")
# print("Hello" + name)
# 下面这个类似模版字符串,是py3的语法,可通过python3运行命令,python --version查看版本
print(f"Hello, {name}")
# Name: Surya
# Traceback (most recent call last):
# File "name.py", line 1, in <module>
# name = input("Name: ")
# File "<string>", line 1, in <module>
# NameError: name 'Surya' is not defined
# python2中会报以上错误,它将输入作为表达式,而py2的input相当于eval(raw_input(prompt))
Conditions
n = input("Number: ")
if n > 0:
print("n is a positive")
elif n < 0:
print("n is a negative")
else:
print("n is zero")
# TypeError: '>' not supported between instances of 'str' and 'int'
# py3的input将所有输入作为str类型 ,修改的话可以使用int(input("Number: "))强转int
Data Structures
name = "Harry"
# list - sequences of mutable values
list = [1,2,3]
# tuple - sequences of immutable value
tuple = (1.0,1.0)
# set - collections of unique values
set = [2,3,4,]
# dict - collections of key-value paris
dic = {'key': 'value'}
print(name[0],list,tuple,dic)
Loops
# for i in [1,2,3,4,5,6]: range创建一个整数列表,有三个参数
for i in range(6):
print(i)
Function
def square(x):
return x*x
Modules
当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
- 1、当前目录
- 2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
- 3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/
from functions import square
# 也可以通过import functions全部导入
print(square(3))
Object-oriented Programming
class Point():
def __init__(self,input1,input2):
self.x = input1
self.y = input2
def scare(self, num):
self.x = num * self.x
self.y = num * self.y
point = Point(1,2)
print(point.x, point.y)
point.scare(2)
print(point.x, point.y)
Function Programming
def Announce(f):
def wrapper():
print("start functions")
f()
print("done functioins")
return wrapper
@Announce
def hello():
print("hello")
hello()
# python 使用 lambda 来创建匿名函数。
# lambda只是一个表达式,函数体比def简单很多。
# lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
# lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
# 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率
names = [{
"age":1
},{
"age":2
},{
"age":3
}]
names.sort(key = lambda person: person["age"],reverse=True)
print(names)
Exception(错误处理)
类似js的try catch,sys是内置模块
import sys
try:
num1 = int(input("num1: "))
num2 = int(input("num2: "))
except ValueError:
print("should be number")
sys.exit(1)
try:
print(int(num1/ num2))
except ZeroDivisionError:
print('do not division by zero')
sys.exit(1)