一、函数定义实例:
def f(language):
print("hello "+ language)
带有参数的函数
#使用默认值时,在形参列表中必须先列出没有默认值的形参,在列出有默认值的实参
# def describe_pet(animal_type, pet_name='mike'):
# print("My animal_type is "+animal_type+", it's name is "+pet_name)
# describe_pet('dog')
# describe_pet(animal_type='hamster',pet_name='harry')
带有返回值的函数
def make_album(s_name, b_name):
singer={s_name:b_name}
return singer
while True:
s_name = input("请输入歌手的姓名:")
b_name = input("请输入专辑的名字:")
if s_name == 'q' or b_name == 'q':
break;
print(make_album('la','db'))
二、模块
模块 是扩展名为.py的文件 import 模块名
#包含初始和结束
from random import randint
x = randint(1,6)
print(x)
三、函数的导入
from 包名 import 函数名 as 别名
四、类名的导入
推荐导入整个模块而不是导入所有的类,并使用 module_name.class_name 语法来访问类
from 模块 import 类名
from 包名.文件名 import 类名
举例:
from day3.class_demo3 import User
五、类的创建
init(self)方法:是一个特殊的方法,每当在创建一个实例的时候会自动调用,类似于java的构造函数
形参self必不可少且必须位于其他参数前面,它是指向实例本身的引用
作用:让实例能够访问类中的属性和方法
class Restaurant():
def __init__(self,restaurant_name, cuisine_type):
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
def describe_restaurant(self):
print(self.restaurant_name+","+self.cuisine_type)
def open_restaurant(self):
print('餐厅正在营业')
六、类的继承
创建子类实例的时候,需要先给父类的所有属性赋值
所以子类的init()方法需要调用父类的init()方法
class IceCreamStand(Restaurant):
def __init__(self,restaurant_name, cusine_type):
super().__init__(restaurant_name,cusine_type)
self.favor = ['cake','carrot']
def describe_restaurant(self):
print(self.restaurant_name+","+self.cuisine_type)
print("喜欢的食物有:")
for food in self.favor:
print(food)
ice = IceCreamStand('he','chong')
ice.describe_restaurant()
举例:
from day3.class_demo3 import User
class Admin(User):
def __init__(self, first_name, last_name):
super().__init__(first_name, last_name)
self.privileges = [
"can add post",
"can delete post",
"can ban user"
]
def show_privileges(self):
print(self.first_name+":"+self.last_name)
for str in self.privileges:
print(str)
host = Admin('he','chong')
host.show_privileges()
#心得
#在编写此继承的程序中出现了很多问题,在导入文件的时候出现了问题
#我创建了一个python包,所以在导入的时候出现导入不了类的情况
#在调用super()的时候没有加括号,在调用super()的init的方法时候添加了self
#在添加属性privileges的时候没有加self,导致show_privileges的时候显示未定义privileges
#然后创建一个实例的时候,由于方法show_privileges的缩进出现错误,导致报错显示函数未定义
#self是一个指向实例本身的引用,让实例能够访问类中的属性和方法
#self类似于java中的this,但是这个this是不可以省略的,凡是本类中的所有属性都要加self
#super()方法将父类和子类关联起来,能够调用父类的init方法