Python编程:从入门到实践

  • 1 用户输入和while 循环 (第七章)
  • 2 函数 (第八章)
  • 2.1 参数传递
  • 2.2 返回值
  • 2.3 传递列表
  • 2.4 传递任意数量的实参
  • 2.4.1 任意数量的实参
  • 2.4.2 任意数量的关键字实参
  • 2.5 将函数储存在模块中
  • 3 类 (第九章)
  • 3.1 一个实例
  • 3.1.1 访问属性
  • 3.1.2 调用方法
  • 3.2 使用类和实例
  • 3.2.1 默认属性
  • 3.2.2 修改属性值
  • 3.3 继承
  • 3.3.1 子类的方法__init__()
  • 3.3.2 重写父类方法
  • 3.3.3 将实例用作属性
  • 3.4 导入类
  • 3.5 Python标准库 (important !)


1 用户输入和while 循环 (第七章)

2 函数 (第八章)

2.1 参数传递

若定义函数为函数名(形参1,形参2,形参3=默认值):则参数传递方法如下表:

名称

方法

注意事项

位置实参

函数名(实参1,实参2,实参3)

顺序不可颠倒

关键字实参

函数名(形参1=实参1,形参2=实参2,形参3=实参3)

顺序可颠倒

默认值

函数名(实参1,实参2)

默认值可不写

混合使用


注意代码等效

注:使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的实参

2.2 返回值

简单值,列表,字典等都可 (详略)

2.3 传递列表

可在函数里面改列表/也可以不改(用切片副本) (详略)

2.4 传递任意数量的实参

2.4.1 任意数量的实参

定义函数:函数名(*形参):

注:*形参代表创立一个空tuple(元组),实参传入元组内

以下是代码:

def make_pizza(*toppings):       
    """打印顾客点的所有配料"""    
    print(toppings)  
      
make_pizza('pepperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')

以下是运行效果:

(‘pepperoni’,)
(‘mushrooms’, ‘green peppers’, ‘extra cheese’)

2.4.2 任意数量的关键字实参

函数名(**形参)

注:**形参代表创立一个空dict(字典),实参传入字典内

以下是代码:

def build_profile(first, last, **user_info):
    """创建一个字典,其中包含我们知道的有关用户的一切"""    
    profile = {}    
    profile['first_name'] = first    
    profile['last_name'] = last  
    for key, value in user_info.items():        
        profile[key] = value    
    return profile
    
user_profile = build_profile('albert', 'einstein',                            
                             location='princeton',                            
                             field='physics')
print(user_profile)

以下是运行效果:

{‘first_name’: ‘albert’, ‘last_name’: ‘einstein’, ‘location’: ‘princeton’, ‘field’: ‘physics’}

2.5 将函数储存在模块中

方法

注意事项

import 模块名

调用函数时需要用模块名.函数名()

from 模块名 import 函数名

调用函数直接函数名()

from 模块名 import 函数名 as 函数名简写

调用函数直接函数名简写()

import 模块名 as 模块名简写

调用函数时需要用模块名简写.函数名()

from 模块名 import *

调用函数直接函数名() (*代表引入全部函数)

3 类 (第九章)

3.1 一个实例

以下是代码:

class Dog():     
    """一次模拟小狗的简单尝试"""    
    def __init__(self, name, age):        
        """初始化属性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!")

代码

解释

class 类名():

定义类

def __init__(self,形参1,形参2):

初始化

self.属性1=形参1

定义属性

def 方法名1(self):

定义方法

3.1.1 访问属性

.属性

以下是代码:

class Dog():
    '''见上文'''

my_dog = Dog('willie', 6)
print("My dog's name is " + my_dog.name.title() + ".") 
print("My dog is " + str(my_dog.age) + " years old.")

以下是运行效果:

My dog’s name is Willie.
My dog is 6 years old.

3.1.2 调用方法

.方法()

以下是代码:

class Dog():
    '''见上文'''

my_dog = Dog('willie', 6)
my_dog.sit()
my_dog.roll_over()

以下是运行效果:

Willie is now sitting.
Willie rolled over!

3.2 使用类和实例

3.2.1 默认属性

3.2.2 修改属性值

方法1 访问修改
方法2 用方法修改
详略

3.3 继承

3.3.1 子类的方法__init__()

以下是代码:

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.title()    
    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 odometer!")    
    def increment_odometer(self, miles):        
        self.odometer_reading += miles

class ElectricCar(Car):
    """电动汽车的独特之处"""    
    def __init__(self, make, model, year):  #只继承了Car      
        """初始化父类的属性"""         
        super().__init__(make, model, year)  #必须写成 super().__init__(形参1,形参2) 的形式
            
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())

以下是运行效果:

2016 Tesla Model S

3.3.2 重写父类方法

直接重写

3.3.3 将实例用作属性

3.4 导入类

类比导入函数 (详略)

3.5 Python标准库 (important !)

例:OrderedDict() 有序字典

以下是代码:

from collections import OrderedDict

favorite_languages = OrderedDict()

favorite_languages['jen'] = 'python'
favorite_languages['sarah'] = 'c'
favorite_languages['edward'] = 'ruby'
favorite_languages['phil'] = 'python'

for name, language in favorite_languages.items():
    print(name.title() + "'s favorite language is " +            
          language.title() + ".")

以下是运行效果:

Jen’s favorite language is Python.
Sarah’s favorite language is C.
Edward’s favorite language is Ruby.
Phil’s favorite language is Python.