【免费分享编程笔记】Python学习笔记(三)

简介: 【免费分享编程笔记】Python学习笔记(三)

【免费分享编程笔记】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 ")
  1. 访问属性
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)
  1. 调用方法
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()
  1. 创建多个实例
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修改属性值

  1. 直接修改
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()
  1. 通过方法修改属性值
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()
  1. 通过方法对属性值进行递增
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()


目录
相关文章
|
24天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
17天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
4天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
1天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
219 12
|
19天前
|
人工智能 IDE 程序员
期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
|
21天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2578 22
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
3天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
168 2
|
1天前
|
编译器 C#
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
101 65
|
21天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1578 16
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
4天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
251 2