函数
- 将函数存储在称为模块的独立文件中,让程序组织有序
def doA():
"""文档字符串解释内容"""
print("hello")
doA()
- 文档字符串:描述函数作用
传递实参
位置实参
- 类比Java的函数调用,形参和实参根据位置一一对应
关键字实参
- 传递给函数的是名称-值对
- saySth(name=‘jack’,sth=‘hello’)
- 可以定义函数参数的默认值
def saySth(name,sth='hello'): #定义时先列出没有默认值的形参,然后是有默认值的形参
print(name)
print(sth)
saySth(name='jack')
等价于
saySth(jack)
注意不能这样定义 def saySth(sth='hello',name),如果这样,当saySth(jack)时,调用采用位置方式,会将jack对应为sth,不对呀
- if非空字符串为true
- 若传递参数为列表,不希望在函数中改变列表内容,则传递列表的切片即可
- function_name(list_name[:])
传递任意数量的实参
def make_pizza(*toppings):
print(toppings)
- 星号表示创建一个名字为toppings的空元组,然后将传入的任意数量实参放入其中
- 结合使用位置实参和任意数量的实参,参照Java语法,任意数量放在最后
使用任意数量的关键字实参
def build(first,last,**user_info)
profile={}
for k,v in user_info.items():
print(k)
print(v)
res = build("alb","est",loc="beijing",field='maths')
- 两个星号表示创建字典,然后将传入的键值对放入其中
将函数存储在模块中
- 将代码块和主程序分离
- 可将函数存储在叫模块的独立文件中,再将模块导入到主程序中
import pizza #表示导入pizza.py模块文件中的所有函数
pizza.doSth() #调用模块中的方法
from pizza import doSth,saySth
saySth()
doSth()
from pizza import doSth as ds #使用函数别名
ds()
from pizza as pz #使用模块别名
from pizza import * #导入所有函数,然后可不指定模块名,直接调用
- 函数命名:小写以及使用下划线
- 形参指定默认值时,等号两边没有空格,函数调用中的关键字实参时也遵循这样约定
类
class Dog(): #类的首字母大写,类的实例名字小写,对于Python2来说,定义为class Dog(object)
def __init__(self,name,age): #构造方法,构造时自动传入实参self,self要放在最前面
self.name = name
self.age = age
def sit(self):
print(self.name)
class BigDog(Dog): # BigDog类继承自Dog类
def __init__(self,name,age):
super().__init__(self,name,age) #相当于Java的super(name,age)
# 方法的重写类比Java,名字一样,不再赘述
- 类也可以存储在模块中
- 继承,构造方法原理同Java
导入类
法1
- 将Car类存在某个模块文件中,如car.py中
- 导入该类
- from car improt Car
- 直接类名来调用
法2
-
全部导入
- import car 等价于 from car import *
-
然后模块.类名来调用
-
类可以分散到多个模块(父类和子类)或者同一个模块存储不同的类
标准库
- 标准库本质是一组模块
- 例如有序字典: from collections import OrderedDict
- 一个空行分隔方法,两个空行分隔模块中的不同类
- 自己模块和标准库中模块的import中间有一个空行
- 命名约定:类驼峰命名法,且每个单词首字母大写,实例名和模块名采用小写,单词之间加下划线