【免费分享编程笔记】Python学习笔记(二)+https://developer.aliyun.com/article/1621229
8.3传递列表
- 函数实参为列表
def greet_users(names): for name in names: msg="Hello,"+name.title()+"!" print(msg) usernames=['hanana','ty','margot'] greet_users(usernames)
8.3.1在函数中修改列表
#首先创建一个列表,其中一些包含要打印的设计 unprinted_designs=['iphone case','robot pendant','dodecahedron'] completed_models=[] #模拟打印这个设计,知道未打印的设计为止 #打印每个设计后,都将其移动到completed_models中 while unprinted_designs: current_design=unprinted_designs.pop() #模拟根据设计制作3D打印的过程: print("Printing model:"+current_design) completed_models.append(current_design) #显示并打印好所有的模型: print("\nThe following models have been printed:") for completed_model in completed_models: print(completed_model)
8.5传递任意数量的实参
- 形如
*topping
的参数我们称为一个元组。 - 元组可以接受多个实参,这样做的好处就是形参不用写多个来匹配了!
def make_pizza(*toppinhs): print(toppinhs) make_pizza('peperoni') make_pizza('mushrooms','green peppers','extra cheese') def make_pizza(*toppings): print("\n making a pizza with following toppings:") for topping in toppings: print("-"+topping) make_pizza('peperoni') make_pizza('mushrooms','green peppers','extra cheese')
8.6将函数存储在模块中
8.6.1导入整个模块
- 将函数存储在被称为模块的独立文件中,再将模块导入到主程序中。
- 关键字
import
pizza.py:
def make_pizza(size,*toppings): print("\n making a"+str(size)+ "-inch pizza with the following toppings:") for topping in toppings: print("-"+topping)
making_pizzas.py:
import pizza pizza.make_pizza(16,'pepperoni') pizza.make_pizza(12,'mushroom','pepperoni','green peppers','extra cheese')
8.6.2导入特定函数
from
模块名import
函数名
from pizza import make_piza make_pizza(16,"peopperonic") make_pizza(12,'mushroom','pepperoni','green peppers','extra cheese')
8.6.3使用as给函数指定别名
- 将函数进行重命名
from pizza import make_pizza as mp mp(16,'people') mp(12,'mushroom','pepperoni','green peppers','extra cheese')
8.6.4使用as给模块指定别名
- 通过给指定的简短的别名,让我们更轻松的调用模块中的函数。
import pizza as p p.make_pizza(16,'people') p.make_pizza(12,'mushroom','pepperoni','green peppers','extra cheese')
8.6.5导入模块中的所有函数
- 使用
*
运算符可以让 Python导入模块的 所有函数
from pizza import * make_pizza(16,'people') make_pizza(12,'mushroom','pepperoni','green peppers','extra cheese')
九、类
9.1使用和创建类
self
是自动创建的一个形参,可以访问自己创建的属性
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()+"roll over!")
9.1.1根据类创建实例
class Dog(): my_dog=Dog('willie',6) print("my dog name is"+my_dog.name.title()+".") print("my dog is"+str(my_dog.age)+"year ole ")
- 访问属性
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() + "roll over!") my_dog=Dog('willie',6) print("\n"+my_dog.name)
- 调用方法
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() + "roll over!") my_dog=Dog('willie',6) my_dog.sit() my_dog.roll_over()
- 创建多个实例
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() + "roll over!") my_dog=Dog('willie',6) your_dog=Dog("lucky",3) print("my dog name is"+my_dog.name.title()+".") print("my dog is"+str(my_dog.age)+"years old")
9.2使用类和实例
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") my_new_car=Car('audi','a4',2016) print(my_new_car.get_descriptive_name()) my_new_car.read_odometer()
9.2.3修改属性值
- 直接修改
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") my_new_car=Car('audi','a4',2016) print(my_new_car.get_descriptive_name()) my_new_car.odometer_reading=23 my_new_car.read_odometer()
- 通过方法修改属性值
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 update_odometer(self,mileage): self.odometer_reading=mileage def read_odometer(self): print("This car has"+str(self.odometer_reading)+"miles on it") my_new_car=Car('audi','a4',2016) print(my_new_car.get_descriptive_name()) my_new_car.update_odometer(23) my_new_car.read_odometer()
- 通过方法对属性值进行递增
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 update_odometer(self,mileage): self.odometer_reading=mileage def increment_odometer(self,miles): self.odometer_reading+=miles def read_odometer(self): print("This car has"+str(self.odometer_reading)+"miles on it") my_used_car=Car('subaru','outback',2013) print(my_used_car.get_descriptive_name()) my_new_car=Car('audi','a4',2016) print(my_new_car.get_descriptive_name()) my_used_car.update_odometer(23) my_used_car.read_odometer()
9.3继承
- 原有的类称为 父类,新类称为 子类
- 子类继承了父类所有的方法属性,同时还可以定义自己的属性和方法
9.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 roll back an odometer!") def increment_odometer(self,miles): self.odometer_reading+=miles class ElectricCar(Car): def __init__(self,make,model,year): super().__init__(make,model,year) my_tesla=ElectricCar('tesla','model',2016) print(my_tesla.get_descriptive_name())
9.3.3给子类定义属性和方法
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 roll back an odometer!") def increment_odometer(self,miles): self.odometer_reading+=miles class ElectricCar(Car): def __init__(self,make,model,year): super().__init__(make,model,year) self.battery_size=70 def describe_battery(self): print("This car has a "+str(self.battery_size)+"-kwh battery") my_tesla=ElectricCar('tesla','model',2016) print(my_tesla.get_descriptive_name()) my_tesla.describe_battery()
an odometer!")
def increment_odometer(self,miles): self.odometer_reading+=miles
class ElectricCar(Car):
def init(self,make,model,year):
super().init(make,model,year)
my_tesla=ElectricCar(‘tesla’,‘model’,2016)
print(my_tesla.get_descriptive_name())
### 9.3.3给子类定义属性和方法 ```python 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 roll back an odometer!") def increment_odometer(self,miles): self.odometer_reading+=miles class ElectricCar(Car): def __init__(self,make,model,year): super().__init__(make,model,year) self.battery_size=70 def describe_battery(self): print("This car has a "+str(self.battery_size)+"-kwh battery") my_tesla=ElectricCar('tesla','model',2016) print(my_tesla.get_descriptive_name()) my_tesla.describe_battery()