上一个博客汇总了一些常用的、我又还不太熟悉的知识点,但还都是简单的,比较难的部分是函数、类。之前通过一些例子学习过函数和类,还做过笔记,这次当成复习吧。
很基本也经常打交道的概念,我觉得可以了解一下。
为了增加程序的可读性,一般建议在定义函数之后附上说明,用三个单引号实现。
f = lambda a, b, c: a + b + c
print(f)
print(f(1, 2, 3))
>>> <function <lambda> at 0x000001E6FE34E828>
>>> 6
记下语法规则,我总是以为lambda后面有逗号而报错。
# 如果将lambda()改为函数
def f(a, b, c):
return a+b+c
d = f(1, 2, 3)
print(d) # 6
def fibs():
li = list()
for i in range(n-2):
li.append(i)
print(li)
n = 5
fibs()
>>> [0,1,2]
# 或
def fibs():
li = list()
for i in range(n-2):
li.append(i)
return li
n = 5 #如果函数没有传参数进去,那变量的命名要和函数中的变量命名相同
l = fibs()
print(l)
>>> [0,1,2]
# 或给函数传入参数:
def fibs(n):
li = list()
for i in range(n-2):
li.append(i)
return li
l = fibs(5)
print(l)
前面学习到的数据类型(list、dict、str等等)、函数都是对象,随着编程面临的问题越复杂,从数据变多进化出“数组”,数据类型变复杂,进化出“结构体”,处理数据的方式和逻辑变复杂,进化出“对象”。
s1 = Student()
s1.name = '张三'
s1.score = '80'
在类中定义的函数需要传入self参数,表示对象本身。在普通函数中不用传入这个参数。
不带括号: 赋值
带括号: 创建对象 object
参考资料:Python中类-带括号与不带括号的区别
继承可以让子类具有父类的特性,提高了代码的重用性。
class Person:
def __init__(self, name, age):
self.name = name
self.__age = age
def say_age(self):
print(self.name, self.__age)
class Student(Person):
def __init__(self, name, age, score):
self.score = score
s1 = Student('xiaoxi', 15, 85)
s1.say_age() # AttributeError: 'Student' object has no attribute 'name'
报错了,因为Student中没有定义name和age。
class Person:
def __init__(self, name, age):
self.name = name
self.__age = age
def say_age(self):
print(self.name, self.__age)
class Student(Person):
def __init__(self, name, age, score):
self.score = score
Person.__init__(self, name, age) # 子类并不会自动调用父类的__init__(),要自己调用。
print(self.name, self.score)
s1 = Student('xiaoxi', 15, 85) # xiaoxi 85
s1.say_age()
自己写个类和继承体会一下:
class Dog():
'''关于狗的描述'''
def __init__(self, name, age):
self.name = name
self.age = age
def run(self):
print(self.name.title() + " is now running.")
def roll_over(self, color):
print(self.name.title() + " is a " + color + "'s dog, and it rolled over!")
my_dog = Dog('Lucy', 6)
my_dog.run()
my_dog.roll_over('color')
>>> Lucy is now running.
Lucy is a color's dog, and it rolled over!
注意体会self.name和color
写一个继承:
class Animal():
def __init__(self, name, age):
self.name = name
self.age = age
class Dog(Animal):
"""关于狗的描述"""
def __init__(self, name, age, color):
Animal.__init__(self, name, age)
self.color = color
def run(self):
"""小狗被命令跑"""
print(self.name.title() + " is now running.")
def roll_over(self):
"""可以在这个函数中加上独特的属性"""
print(self.name.title() + " is a " + self.color + "'s dog, and it rolled over!")
my_dog = Dog('Lucy', 6, 'black')
my_dog.run()
my_dog.roll_over()
>>> Lucy is now running.
Lucy is a color's dog, and it rolled over!
Dog()继承了Animal类中的name和age定义。