因为工作中开发以C++为主,python不太常用,所以每次学过之后,很快就忘记了。

写这篇博客的目的,是为了记录python的基本语法,每当用到的时候可以速查。

当然这篇不是python的入门教程,更偏向于python与C++之间的差异。

控制台交互

  1. 输出

    print(value)
  2. 输入

    str = input("请输入内容")

数据类型

布尔

  1. True
  2. False

数字

定义

包括整数和浮点数

用法

  1. 加:+
  2. 减:-
  3. 乘:*
  4. 除:/
  5. 乘方:**
  6. 取模:%
  7. 转换为字符串:str()包裹

字符串

定义

字符串就是一系列字符。在python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号。

name = "liu guangxuan"

用法

  1. 修改大小写

    • title()
    • upper()
    • lower()
  2. 拼接

    • 直接相加
  3. 删除空白

    • lstrip()
    • rstrip()
    • strip()
  4. 转换为int

    • int(str)

列表

定义

列表由一系列按特定顺序排列的元素组成。可以将任何东西加入列表中,其中的元素之间可以没有任何关系。

在Python中,用方括号([])来表示列表,并用逗号来分割其中的元素。

names = ["liuguangxuan", "xiaoming", "xiaohong"]
print(names)

用法

  1. 访问。直接用下标访问,从0开始,-1代表最后一个元素。

    names[0]        # 访问呢第一个元素
    names[-1]        # 访问最后一个元素
  2. 修改。

    names[0] = "xiaozhang"
  3. 添加

    • append(value)

      # 在末尾添加
      append(str)
    • insert(index, str)

      # 在任意位置添加,列表中每个既有元素都右移一个位置
      insert(index, str)
  4. 删除

    • del

      # 根据位置删除
      del names[0]
      
    • pop()

      # 从栈顶弹出
      names.pop()
      
    • pop(index)

      # 从任意位置弹出
      names.pop(0)
      
    • remove(value)

      # 根据内容删除,该方法只能删除第一个指定的值,如果想要删除列表中所有的该值,应该在循环中判断
      names.remove(value)
      
  5. 排序

    • sort(reverse=True)

      # 永久排序,此为成员函数
      name.sort()                    # 正序
      name.sort(reverse=True)        # 倒序
      
    • sorted()

      # 临时排序,此为非成员函数
      sorted(name)                # 正序
      sorted(names,reverse=True)    # 倒序
      
  6. 反转

    • reverse()
  7. 长度

    • len()

      # 非成员函数
      len(names)
      
  8. 遍历

    for name in names:
        print(name)
    
  9. 数字列表

    • 用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)]
      
  10. 切片

    • 指定范围内的元素,分别为第一个元素的索引和最后一个元素的索引加1

      names[1:3]
      
    • 省略头或尾

      # 从头开始
      names[:3]
      
      # 直到结束
      names[1:]
      
      # 最后3个
      names[-3:]
      
    • 复制列表

      # 深拷贝
      names2 = names[:]
      
      # 浅拷贝
      names3 = names
      
  11. 检查是否在列表中

    • in

      if "liu" in names:
          dosomething()
      
    • not in

      if "liu" not in names:
          dosomething()
      
  12. 确定列表是否为空

    names = ["liu", "guang", "xuan"]
    if names:
        print("not empty")
    

元组

定义

即不可变的列表,用圆括号来标识

dimensions = (200, 50)

用法

  1. 遍历

    for dimension in dimensions:
        print(dimension)
    

字典

定义

字典是一系列的键值对,每个键都与一个值相关联,可以将任何对象作为字典中的值。即类似于json。

liu = {name : "liuguangxuan", "age" : 30}

用法

  1. 访问

    liu["name"]
    
  2. 添加

    liu["gender"] = "male"
    
  3. 修改

    liu["age"] = 29
    
  4. 删除

    del liu["gender"]
    
  5. 遍历

    • 遍历键值对

      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)
          ……
      
  6. 嵌套

    字典中可存储字典,也可存储列表
    

语句

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()

参数

  1. 关键字实参

    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")
    
  2. 默认值

    def describe_pet(animal_type, pet_name = "softkitty"):
        print("\nI have a " + animal_type + ".")
        print("name is:" + pet_name)
    
  3. 传递列表

    # 此时参数为浅拷贝,可以在函数中修改该列表
    # 若禁止修改,则应修改为深拷贝,使用切片法,但是相应的会带来效率上的损失。
    # 尽量使用浅拷贝。
    def say_hello(students):
        for student in students:
            print("hi," + student)
            
    students = ["xiaohong", "xiaoming", "xiaoliu"]
    
  4. 任意数量的实参

    • 元组

      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
      

返回值

  1. 简单值

    def get_full_name(first_name, last_name):
        return first_name + " " + last_name
    
  2. 字典

    def get_full_name(first_name, last_name):
        person = {"first_name" : first_name , "last_name" : last_name}
        return person
    

存储在模块中

  1. 编写模块

    # pizza.py文件
    def make_pizza(size, *topping)
        ……
    
  2. 导入模块

    # make_pizza.py文件
    import pizza
    
    pizza.make_pizza(12, 'a')
    pizza.make_pizza(12, 'a', 'b')
    
  3. 导入特定函数

    from module_name import function_name
    
  4. 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')
      
  5. 导入模块中所有函数

    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 *

标签: Python

添加新评论