在函数内部定义的函数,在函数外部无法调用内部函数
def nameprint(isChinesename,name,familyname):
def printname(a,b):
print('{0},{1}'.format(a,b))
if isChinesename:
printname(familyname,name)
else:
printname(name,familyname)
nameprint(True,'Hua','Li')
1、python支持面向过程、面向对象、函数式编程等多种编程范式。
2、面向对象的思维:设计一个事物,会思考“车怎么设计”,而不是“按步骤怎么造车。”复杂问题从问题中找名词。
3、解决简单问题使用面向过程。
4、解决复杂问题:宏观上使用面向对象
初始化创建好的对象,初始化指是:“给实例属性赋值”
可以进一步说一个python对象包含如下部分:
1、id(识别码)
2、type(对象类型)
3、value(对象的值)
(1)属性 (2)方法
1、定义:对象比作“饼干”,类为制作饼干的‘模具‘’,类将行为和状态打包在一起
2、格式:
class 类名:
类体
类名符合标识符准则,首字母要大写
从属于实例对象的属性
1、一般在_init_()方法中:self.实例属性名=初始值
2、在本类的其他实例方法中,通过self进行访问: self.实例属性名
3、创建实例对象后,通过实例对象访问:
obj01.实例属性名=值
定义:从属于实例对象的方法
def 方法名(self,[,形参列表]):
函数体
调用格式:
对象,方法名([实参列表])
从属于类对象的属性
class Student:
company='SXT' #类属性
count=0 #类属性
def __init__(self,name,score):
self.name=name
self.score=score #实例属性
Student.count+=1
def say_score(self):
print("My name is ",self.name)
print("My score is ",self.score) #实例方法
s1=Student('Lily',89) #s1实例对象
s1.say_score()
print('一共创建了{0}个对象'.format(Student.count))
从属于类对象的方法
@classmethod
def 类方法名(cls,[,形参列表]):
函数体
cls必须有,指的是“类对象”本身
调用格式:类名.类方法名(参数列表)
class Student:
company="SXT"
@classmethod
def printCompany(cls):
print(cls.company)
Student.printCompany()
与“类对象”无关的方法
通过装饰器@staticmethod 调用
格式:
@staticmethod
def 静态方法名(参数列表)
函数体
调用方式:
类名.静态方法名(参数列表)
用于实现对象销毁时所需操作,例如释放对象占用资源
当对象没有被引用时,删除所调用对象的方法
定义__call__方法的对象,即该对象可以像函数一样被调用
class salaryAccoount:
def __call__(self,salary):
yearsalary=salary*12
monthsalary=salary
daysalary=salary/27.5
return dict(yearsalary=yearsalary,monthsalary=monthsalary,daysalary=daysalary)
s=salaryAccoount()
print(s(5000))