Python基础语法
因为工作中开发以C++为主,python不太常用,所以每次学过之后,很快就忘记了。
写这篇博客的目的,是为了记录python的基本语法,每当用到的时候可以速查。
当然这篇不是python的入门教程,更偏向于python与C++之间的差异。
控制台交互
输出
print(value)
输入
str = input("请输入内容")
数据类型
布尔
- True
- False
数字
定义
包括整数和浮点数
用法
- 加:+
- 减:-
- 乘:*
- 除:/
- 乘方:**
- 取模:%
- 转换为字符串:str()包裹
字符串
定义
字符串就是一系列字符。在python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号。
name = "liu guangxuan"
用法
修改大小写
- title()
- upper()
- lower()
拼接
- 直接相加
删除空白
- lstrip()
- rstrip()
- strip()
转换为int
- int(str)
列表
定义
列表由一系列按特定顺序排列的元素组成。可以将任何东西加入列表中,其中的元素之间可以没有任何关系。
在Python中,用方括号([])来表示列表,并用逗号来分割其中的元素。
names = ["liuguangxuan", "xiaoming", "xiaohong"]
print(names)
用法
访问。直接用下标访问,从0开始,-1代表最后一个元素。
names[0] # 访问呢第一个元素 names[-1] # 访问最后一个元素
修改。
names[0] = "xiaozhang"
添加
append(value)
# 在末尾添加 append(str)
insert(index, str)
# 在任意位置添加,列表中每个既有元素都右移一个位置 insert(index, str)
删除
del
# 根据位置删除 del names[0]
pop()
# 从栈顶弹出 names.pop()
pop(index)
# 从任意位置弹出 names.pop(0)
remove(value)
# 根据内容删除,该方法只能删除第一个指定的值,如果想要删除列表中所有的该值,应该在循环中判断 names.remove(value)
排序
sort(reverse=True)
# 永久排序,此为成员函数 name.sort() # 正序 name.sort(reverse=True) # 倒序
sorted()
# 临时排序,此为非成员函数 sorted(name) # 正序 sorted(names,reverse=True) # 倒序
反转
- reverse()
长度
len()
# 非成员函数 len(names)
遍历
for name in names: print(name)
数字列表
用range()函数创建数字列表
for value in range(1, 5): print(value)
用list()将range()创建的结果转换为列表
numbers = list(range(1, 5))
指定步长
even_numbers = list(range(2,11,2))
统计
# 最大值 max(numbers) # 最小值 min(numbers) # 总和 sum(numbers)
列表解析
# 语法糖,即把for循环中的操作提到列表的定义中去 squares = [value**2 for value in range(1,11)]
切片
指定范围内的元素,分别为第一个元素的索引和最后一个元素的索引加1
names[1:3]
省略头或尾
# 从头开始 names[:3] # 直到结束 names[1:] # 最后3个 names[-3:]
复制列表
# 深拷贝 names2 = names[:] # 浅拷贝 names3 = names
检查是否在列表中
in
if "liu" in names: dosomething()
not in
if "liu" not in names: dosomething()
确定列表是否为空
names = ["liu", "guang", "xuan"] if names: print("not empty")
元组
定义
即不可变的列表,用圆括号来标识
dimensions = (200, 50)
用法
遍历
for dimension in dimensions: print(dimension)
字典
定义
字典是一系列的键值对,每个键都与一个值相关联,可以将任何对象作为字典中的值。即类似于json。
liu = {name : "liuguangxuan", "age" : 30}
用法
访问
liu["name"]
添加
liu["gender"] = "male"
修改
liu["age"] = 29
删除
del liu["gender"]
遍历
遍历键值对
for k, v in liu.items() ……
遍历所有键
# 遍历所有键 for k in liu.keys() …… # 有序的遍历所有键 for k in sorted(liu.keys()) ……
遍历所有值
# 遍历所有值 for v in liu.values() …… # 不重复的值 for v in set(liu.values) ……
嵌套
字典中可存储字典,也可存储列表
语句
if语句
age = 12
if age < 4:
……
else if age < 18 and age > 10:
……
else:
……
while语句
current_num = 1
while current_num <= 5:
print(current_num)
current_num += 1
函数
定义
# 定义一个函数
def say_hello():
print("hello!")
# 调用函数
say_hello()
参数
关键字实参
def describe_pet(animal_type, pet_name): print("\nI have a " + animal_type + ".") print("name is:" + pet_name) describe_pet(pet_name="harry", animal_type="hamster")
默认值
def describe_pet(animal_type, pet_name = "softkitty"): print("\nI have a " + animal_type + ".") print("name is:" + pet_name)
传递列表
# 此时参数为浅拷贝,可以在函数中修改该列表 # 若禁止修改,则应修改为深拷贝,使用切片法,但是相应的会带来效率上的损失。 # 尽量使用浅拷贝。 def say_hello(students): for student in students: print("hi," + student) students = ["xiaohong", "xiaoming", "xiaoliu"]
任意数量的实参
元组
def make_pizza(size, *toppings): print("\nMake a" + str(size) + "inch pizza with the following toppings:") for topping in toppings: print("- " + topping)
字典
def make_profile(first, last , **user_info): profile = {} profile["first"] = first prifile["last"] = last for k, v in user_info.items(): profile[k] = v return profile
返回值
简单值
def get_full_name(first_name, last_name): return first_name + " " + last_name
字典
def get_full_name(first_name, last_name): person = {"first_name" : first_name , "last_name" : last_name} return person
存储在模块中
编写模块
# pizza.py文件 def make_pizza(size, *topping) ……
导入模块
# make_pizza.py文件 import pizza pizza.make_pizza(12, 'a') pizza.make_pizza(12, 'a', 'b')
导入特定函数
from module_name import function_name
as别名
函数别名
from pizza import make_pizza as mp mp(12, 'a') mp(12, 'a', 'b')
模块别名
import pizza as p p.make_pizza(12, 'a') p.make_pizza(12, 'a', 'b')
导入模块中所有函数
from pizza import * make_pizza(12, 'a') make_pizza(12, 'a', 'b')
类
定义
# dog.py
class Dog():
"""模拟小狗"""
def __init__(self, name, age):
self.name = name
self.age = age
def sit(self):
print(self.name.title() + " is now sitting.")
def roll_over(self):
print(self.name.title() + " rolled over!")
使用
# test.py
from dog import Dog
my_dog = Dog("white", 6)
my_dog.sit()
my_dog.roll_over()
print(my_dog.age)
继承
# car.py
from statistics import mode
class Car():
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
long_name = str(self.year) + " " + self.make + " " + self.model
return long_name
def read_odometer(self):
print("This car has " + str(self.odometer_reading) + " miles on it.")
def update_odometer(self, mileage):
if(mileage >= self.odometer_reading):
self.odometer_reading = mileage
else:
print("You can't roll back an odlmeter!")
# electric_car.py
from car import Car
class ElectricCar(Car):
def __init__(self, make, model, year):
super().__init__(make, model, year)
def fill_gas_tank(self):
print("This car doesn't need a gas tank!")
导入
from module_name import class_name
from module_name import *