Python入门

149 阅读2分钟

Types

python可以自己推断,布尔类型TrueFalse是大写的

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)