Python基础语法-函数+类


前言

对于函数和类的概念我们自然也不会陌生,python和java一样都是面向对象的语言,很多思想都是想通的。编写python函数就像编写java方法一样,通过函数,使程序的编写、阅读和测试都更加容易。在面向对象编程中,可以编写类表示现实世界中的事物和情景。


一、函数

1.下面是一个简单的函数,名为greet_user,作用是显示简单的问候语。
在这里插入图片描述
2.我们也可以创建一个多参数的函数,同时可以使用关键字传参,关键字传参的好处就是直接在实参中将名称和值关联起来,而不关心顺序。
在这里插入图片描述
3.编写函数时,可给每个形参指定默认值,如果我们没有为这个形参传递值,则这个形参将会是默认值。
在这里插入图片描述
4.同时我们还可以编写有返回值的函数,返回值让你能够将程序的大部分繁重工作转移到函数中去完成,从而简化主程序。
在这里插入图片描述
5.返回值不仅能返回简单值,可返回任何类型的值,包括列表和字典等较复杂的数据结构。

#返回字典
def build_person(first_name,last_name,age=''):
    person={'first':first_name,'last':last_name}
    #如果用户传进来了年龄值,则往字典中添加一个键值对
    if age:
        person['age']=age
    return person
noAge=build_person('lenron','james')
withAge=build_person('lenron','james',20)
#没有年龄的情况
print(noAge)
#有年龄的情况
print(withAge)

在这里插入图片描述
6.函数还可以结合while循环来使用,用户输入名和姓,程序向用户问好,当用户输入q的时候退出。

#结合while循环
def get_formatted_name(first_name,last_name):
    full_name=first_name+' '+last_name
    return full_name.title()
while True:
    print('please tell me your name:')
    print('input q to quit')
    first_name=input('First name:')
    if(first_name=='q'):
        break
    last_name=input('Last name:')
    full_name=get_formatted_name(first_name,last_name)
    print('Hello,'+full_name+'\n')
print('goodbye')

在这里插入图片描述
7.向函数传递列表很有用,这种列表包含的可能是名字、数字或者更复杂的对象(如字典)。将列表传递给函数后,函数就能直接访问其内容。假设有一个用户列表,我们要问候其中的每位用户,代码如下:
在这里插入图片描述

8.形参user_info中的两个星号表示让Python创建一个名为user_info的空字典,用于存储用户简介。我们在实参中传递locaton=‘beijing’,age=12两个键值对,并将这两个键值对保存在profile字典里面。

#使用任意数量的关键字实参
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('lenron','james',locaton='beijing',age=12)
print(user_profile)

在这里插入图片描述


二、创建和使用类

在面向对象的编程中,需要编写现实世界中的事务和情景的类,并基于这些类来创建对象。根据类来创建对象被称为实例化,这让你能够使用类的实例。
1.下面这个例子创建和使用Dog()类,并通过实例调用类的属性和方法,修改属性值等,代码如下:

#创建和使用类
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!')
    def grow(self,increase):
        self.age+=increase
        
#根据类创建实例
dog=Dog('xiaohei',6)
print('----------调用类的属性-------------')
print('my dog name is '+dog.name.title())
print('my dog name is '+str(dog.age)+' years old')
print('----------调用类的方法-------------')
dog.sit()
dog.roll_over()
print('----------通过实例修改类的属性-------------')
dog.age=7
print('my dog name is '+str(dog.age)+' years old')
print('----------通过方法修改类的属性-------------')
dog.grow(10)
print('my dog name is '+str(dog.age)+' years old')

在这里插入图片描述


三、继承

编写类时,并非要从空白开始。一个类继承另外一个类时,它将自动获得另外一个类的所有属性和方法,同时还可以定义自己的属性和方法。

1.例如:Animal和Cat类,可以把动物共同的属性和行为放到Animal类中,把Cat类特有的属性和行为放到Cat类中去,让Cat类继承Animal类。

#父类
class Animal():
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def eat(self):
        print(self.name+'正在吃饭')
    def sleep(self):
        print(self.name+'正在睡觉')
#子类
class Cat(Animal):
    def __init__(self,name,age,claw):
        #初始化父类的属性,在初始化猫特有属性
        super().__init__(name,age)
        #猫爪子长度
        self.claw=claw
    #子类中特有的方法
    def jump(self):
         print(self.name+'正在跳跃')
    def clawing(self):
         print(self.name+'有'+str(self.claw)+'厘米长度的爪子')
            
cat=Cat('xiaohei',6,3)
#调用父类方法
cat.eat()
cat.sleep()
#子类自己的方法
cat.jump()
cat.clawing()

在这里插入图片描述
2.重写父类的方法,对于父类的方法,子类都可以对其进行重写。重写的方法要与父类方法同名,这样Python就只关注你在子类中定义的方法。

#父类
class Animal():
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def eat(self):
        print(self.name+'正在吃饭')
    def sleep(self):
        print(self.name+'正在睡觉')
#子类
class Cat(Animal):
    def __init__(self,name,age,claw):
        #初始化父类的属性,在初始化猫特有属性
        super().__init__(name,age)
        #猫爪子长度
        self.claw=claw
    #子类中特有的方法
    def jump(self):
         print(self.name+'正在跳跃')
    def clawing(self):
         print(self.name+'有'+str(self.claw)+'厘米长度的爪子')
    #重写了父类的方法
    def sleep(self):
        print('猫很少睡觉')
            
cat=Cat('xiaohei',6,3)
#父类的方法
cat.eat()
#子类重写过的方法
cat.sleep()
#子类自己的方法
cat.jump()
cat.clawing()

在这里插入图片描述


总结

在本章中主要介绍了函数的定义,以及如何传递实参,如何将函数同列表、字典、while循环结合起来使用。同时还介绍了如何编写类,操作属性以及编写方法等。除此之外,还了解了如何使用继承以及重写父类方法。使用继承可简化类的创建工作,使代码更简洁。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JinziH Never Give Up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值