Python进阶二
文章目录
函数参数
1.位置传递
2.名称传递
def f(a,b): f(1,2) f(b=2,a=1)
3.可选参数传递(可选参数必须放在最后)
def f(a,b=1) ✔
def f(b=1,a) ❌
4.可变参数:函数可以接收不确定总数的参数变量
∗ *∗ 接收元组 f(n, *a)
∗∗ **∗∗接受字典 f(n, **a)
局部变量和全局变量
1.局部变量可与全局变量重名
2.局部变量函数调用时生效,函数运算结束后失效
3.局部变量为组合数据类型(列表,字典,集合)且未创建,等同于全局变量
a = 1 def f(): global a #此时不能赋值,即global a=9 错误 a +=10
ls =['a','b'] def f(): ls.append('c') f() print(ls) ['a', 'b', 'c']
面向对象OOP
计算三款产品的原始售价和实际售价之和
class Product: def __init__(self,name): self.name = name self.label = 0 self.real = 0 a = Product('电脑') b = Product('打印机') c = Product('投影仪') a.label,a.real = 10000, 8000 b.label,b.real = 2000, 1000 c.label,c.real = 1500, 900 s1,s2 = 0, 0 for i in (a,b,c): s1 += i.label s2 += i.real print(s1,s2)
类构建
类名使用大写字母组合,如ClassName BasicAuto
类描述通过 类名.__doc__来访问
class DemoClass: "This is a demo for Python class" pass print(DemoClass.__doc__)
类对象:类定义完后,默认生成一个类对象;类对象是type类的实例,表达为type类型
class DemoClass: "This is a demo for Python class" print('hello') print(DemoClass.__doc__) print(type(DemoClass)) hello This is a demo for Python class <class 'type'>
类定义即执行,不需要调用
class DemoClass: "This is a demo for Python class" print('hello') hello
实例对象不同于类对象,实例对象是python类的最常用使用方式
class DemoClass: "This is a demo for Python class" print('hello') a = DemoClass() print(type(DemoClass)) print(type(a)) hello <class 'type'> <class '__main__.DemoClass'>
构造函数:init() l类实例化时使用的函数
class DemoClass: def __init__(self,name): print(name) a = DemoClass('老王') b = DemoClass('老李')