test05.py
# 定义一个函数 使用def语句
# 规范要求定义函数前后要空两行
# 导入模块或是特定的函数 可以后跟as为其重命名
import test01 as t1
from test06 import say_hi as sh
# from test06 import * 可以导入模块中的所有函数
def say_hello():
print("hello!")
say_hello()
# 传入参数
"""
def say_name(name):
print("hello," + name + "!")
user_name = input("请输入你的名字:")
say_name(user_name)
"""
# 可以给函数的形参赋默认值
# 指定形参默认值时 等号两边不要加空格
def say_yes(name="everyone"):
print("Yes!" + name)
say_yes()
say_yes("lostsakura")
# 使用return返回值
# 返回值可以是字典
# 2018/07/23
# 传入多实参,可使用*前缀
def make_contr(*toppings):
for topping in toppings:
print("-" + topping)
make_contr("a01")
make_contr("a01", "b02", "c03")
# 接受的参数会创建为一个元祖
# 可以同时使用for in循环
# **前缀可以创建一个空字典来存储实参
def build_profile(name, **user_info):
profile = {}
profile['name'] = name
for key, value in user_info.items():
profile[key] = value
return profile
user_profile = build_profile("lostsakura", age=18, sex="male")
print(user_profile)
# 使用import语句导入模块
# 使用from...import...可以导入特定模块的特定函数,且调用时无需指明来历
# 使用文件名+点运算符调用
print(t1.message)
sh()
控制台运行结果:
hello!
Yes!everyone
Yes!lostsakura
-a01
-a01
-b02
-c03
{'name': 'lostsakura', 'age': 18, 'sex': 'male'}
It's me
Hi!
test06.py
# say_hi()被导入到test05.py中
def say_hi():
print("Hi!")
# 类
# 创建一个Dog类 类的开头一般大写
# 使用self传入自身
class Dog():
# 初始化方法
def __init__(self, name, age):
self.name = name
self.age = age
self.price = 600
def sit(self):
print(self.name.title() + " is now sitting.")
def roll_over(self):
print(self.name.title() + "rolled over!")
def change_price(self, new_price):
self.price = new_price
my_dog = Dog('willie', 6)
print(my_dog.price)
my_dog.sit()
# 修改属性的值可以使用直接修改法
my_dog.price = 500
print(my_dog.price)
# 使用自定义内部方法修改
my_dog.change_price(450)
print(my_dog.price)
# 类的继承
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):
return self.make
class ElectricCar(Car):
def __init__(self, make, model, year):
super().__init__(make, model, year)
my_e_car = ElectricCar('tesla', 'model s', 2016)
print(my_e_car.get_descriptive_name())
"""
通过在子类中命名完全相同的方法名来重写父类中的方法
实例还可以作为其他实例的属性
实例也可以通过from...import...来导入特定实例(要导入多个类时,使用逗号间隔)
若导入的类在同一模块下有相互关联的类,可以自动地间接关联起来,不用特意导入
也可以直接使用import语句导入整个模块,因为调用时含带了模块名,同时也避免了命名冲突
如果相关联的类保存在不同的模块,单一调用时,需要导入
"""
# Python标准库
# collections
控制台运行结果:
600
Willie is now sitting.
500
450
tesla
2018/07/24