Python基础4(函数和类)

本文深入探讨Python的基础知识,包括函数的使用,类和对象的概念,以及继承在面向对象编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python基础4(函数和类)

函数

#函数  返回字典
def build_person(first_name,last_name):
    person={'first':first_name,'last':last_name}
    return person

musician=build_person('s','zq')
print(musician)

{'first': 's', 'last': 'zq'}

def build_person(first_name,last_name,age=''):
    person={'first':first_name,'last':last_name}
    if age:
        person['age']=age
    return person

musician=build_person('s','zq',age=23)
print(musician)

{'first': 's', 'last': 'zq', 'age': 23}


#用户输入姓名,输入q时退出
def get_name(first_name,last_name):
    full_name=first_name +  ' ' + last_name
    return full_name.title()

while True:
    print("\nplease tell your name:")
    print("enter 'q' at any time to quit")
    

    f_name=input("First name:")
    if f_name=='q':
        break
        
    l_name=input("Last name:")
    if l_name=='q':
        break
    
    name=get_name(f_name,l_name)
    print("\nHello, "+name+"!")


please tell your name:
enter 'q' at any time to quit
First name:s
Last name:zq

Hello, S Zq!

please tell your name:
enter 'q' at any time to quit
First name:q
#使用函数修改列表
def print_models(unprinted_designs,completed_models):
    """模拟打印每个设计,直到没有未打印的为止
       打印每个设计后,将其移到completed_models中
    """
    
    while unprinted_designs:
        current_design=unprinted_designs.pop()
        print("Printing model:"+ current_design)
        completed_models.append(current_design)
        
def show_completed_models(completed_models):
    print("\nThe following models have been printed :")
    for completed_model in completed_models:
        print(completed_model)
        
unprinted_designs=['iphone','huawei','xiaomi']
completed_models=[]

print_models(unprinted_designs,completed_models)
show_completed_models(completed_models)

print(unprinted_designs)



Printing model:xiaomi
Printing model:huawei
Printing model:iphone

The following models have been printed :
xiaomi
huawei
iphone
[]
#如果想 进制函数修改列表,用切片法[:]创建列表的副本
def print_models(unprinted_designs,completed_models):
    """模拟打印每个设计,直到没有未打印的为止
       打印每个设计后,将其移到completed_models中
    """
    
    while unprinted_designs:
        current_design=unprinted_designs.pop()
        print("Printing model:"+ current_design)
        completed_models.append(current_design)
        
def show_completed_models(completed_models):
    print("\nThe following models have been printed :")
    for completed_model in completed_models:
        print(completed_model)
        
unprinted_designs=['iphone','huawei','xiaomi']
completed_models=[]

#调用时用切片
print_models(unprinted_designs[:],completed_models)
show_completed_models(completed_models)

#不会修改列表
print(unprinted_designs)


Printing model:xiaomi
Printing model:huawei
Printing model:iphone

The following models have been printed :
xiaomi
huawei
iphone
['iphone', 'huawei', 'xiaomi']
#传递任意数量的实参
def make_piza(*toppings):
    print(toppings)
    
make_piza('aaa')
make_piza('a','b','c')


def make_piza2(*toppings):
    for topping in toppings:
        print("-" + topping)
    
make_piza2('aaa')
make_piza2('a','b','c')


('aaa',)
('a', 'b', 'c')
-aaa
-a
-b
-c
#如果要让函数接收不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后
def make_pizza(size,*toppings):
    print("size="+str(size)+" toppings:")
    for topping in toppings:
        print("-" + topping)

make_pizza(15,'aaa')
make_pizza(23,'a','b','c')

size=15 toppings:
-aaa
size=23 toppings:
-a
-b
-c


#使用任意数量的关键字实参
def build_profile(first,last,**user_info):    #**user_info 两个星号创建一个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('s','zq',lacation='jinan',field='cs')
print(user_profile)

{'first_name': 's', 'last_name': 'zq', 'lacation': 'jinan', 'field': 'cs'}

类和对象

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!")
        
#创建对象
m_dog=Dog('aaa',6)
m_dog.sit()
m_dog.roll_over()

print("dog is "+ str(m_dog.age)+' years old')


Aaa is now sitting
Aaa rolled over!
dog is 6 years old
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 cannot roll back an odometer")
    
    def increment_odometer(self,miles):              #里程表数增加指定的值
        self.odometer_reading += miles              
        
my_used_car=Car('subaru','outback',2013)
print(my_used_car.get_descriptive_name())

my_used_car.update_odometer(23500)
my_used_car.read_odometer()

my_used_car.increment_odometer(100)
my_used_car.read_odometer()



2013 Subaru Outback
This car has 23500 miles on it.
This car has 23600 miles on it.

继承

#继承
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 cannot roll back an odometer")
    
    def increment_odometer(self,miles):              #里程表数增加指定的值
        self.odometer_reading += miles              


#电动车类继承Car
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 s ',2016)  #
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()
   

2016 Tesla Model S 
This car has a 70-kwh battery.     
#将实例用作属性   将大型类拆分成多个协同工作的小类
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 cannot roll back an odometer")
    
    def increment_odometer(self,miles):              #里程表数增加指定的值
        self.odometer_reading += miles              

class Battery():
    """模拟电动车电瓶"""
    def __init__(self,battery_size=70):
        self.battery_size=battery_size
        
    def describe_battery(self):
        print("This car has a "+ str(self.battery_size)+"-kwh battery.")

class ElectricCar(Car):
    def __init__(self,make,model,year):
        super().__init__(make,model,year)
        self.battery = Battery()

my_tesla = ElectricCar('tesla','model s ',2016)  
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()


2016 Tesla Model S 
This car has a 70-kwh battery.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值