wordpress 站点收录,网站改版注意事项,附近哪里有建设,wordpress手机端网站模板下载失败python基础语法5函数作用域函数参数函数对象无名函数回调函数函数嵌套类类的创建类的调用初始化方法类的继承类的定制模块使用模块函数
封装好#xff0c;进行某种功能
del 函数名(参数)#xff1a;函数体return 返回值#xff08;可以没有return语句#xff09;作用域
…
python基础语法5函数作用域函数参数函数对象无名函数回调函数函数嵌套类类的创建类的调用初始化方法类的继承类的定制模块使用模块函数
封装好进行某种功能
del 函数名(参数)函数体return 返回值可以没有return语句作用域
在函数内定义的变量仅能在函数内部使用这是局部变量 函数之外的定义与赋值的变量可以再任何地方使用这是全局变量 global语句可以将局部变量变成全局变量global 函数名
函数参数
位置参数参数的顺序和个数和函数定义中一致
sum0
def math(a,b,c):sumabcreturn sum
a1;b2;c3
math(a,b,c)#a,b,c 依次传入math函数默认参数必须放在位置参数后面
def menu(hamburger,drinl,snacks蛋挞):print((汉堡选择 hamburger)print(饮料选择 drink)print(小食选择 snacks \n)
menu(香辣鸡腿堡,可乐)
#打印结果香辣鸡腿堡可乐蛋挞
menu(香辣鸡腿堡,可乐,薯条)
#打印结果香辣鸡腿堡可乐薯条给了3个参数。第3个参数被更新 不定长参数*参数名当传入参数数量不确定时使用数据类型是元组tuple可以用for来循环遍历
def math(a,*b,c1):print(aa)print(cc)for i in b:print(b)
math(123,11,22,33,c2)关键参数使用伪参数形参的名字来指定其对应的实参传入的变量
def math(a,b):xa-breturn x
ymath(b3,a7)字典传参 1.关键参数作为字典接收
def dic(**args):for s,t in args.items():print(s,:,t)
dic(a20,b30,c50)
#a:20
#b:30
#c:50 args变成一个字典2.将字典展开并接收
def dic(a,b,c):print(a,b,c)
d{a:20,b:30,c:50}
dic(**d)
#20 30 50
#字典d被展开到伪参数abc上函数对象
在函数名末尾不加括号只写名称的格式所表示的是函数本身我们将其称之为函数对象可以像值一样将其带入到变量中去
def printHello(name):print(hello,name)
funcprintHello#func是函数对象
func(siri)
#打印结果是hello siri
#将函数printHello带入到funcfunc可以作为函数使用 无名函数
进行简单处理的函数可以使用关键字“lambda来记述这种写法称为无名函数
#函数
def lo(a):return a.lower()
#无名函数
lolambda s:s.lower()
print(lo(HELLO))#输出 hello 回调函数
函数可以将别的函数作为参数使用被作为参数使用的函数被称为回调函数
def calcdisp(a,b,callback):print(callback(a,b))
def calllback(a,b):return (ab)
calcdisp(3,5,callback)#输出值是8
#简化写法
calcdisp(3,5,lambda a,b : a b)#callback被无名函数替代函数嵌套
可以定义函数中的函数内部函数称为本地函数
def func1():def func2():print(1)print(2)func2()#调用内部函数
func1()#调用外部函数
#在这里不能调用func2func2是func1的内部函数作用域在func1内类
类的创建
类的创建class 类名类名首字母大写 类的属性创建赋值语句 类的方法创建def 方法名self 其中self代表着实例化对象是所有实例的替身
class Math:type_1int_true#创建属性def plus(self):#定义方法print(ab)类的调用
类的实例化例如cokewater表明water这个类创建了一个叫做coke的实例这个实例可以调用water类中的属性和方法
class Food:drink 可口可乐def hambage(self):print(香辣鳕鱼堡)
KFCFood()#实例化类mathnumber为实例化对象即selfnumber
print(Food.drink)#调用实例化对象的属性type_1
Food.hambage()#调用了实例化对象的方法plus注意用def创建方法时第一个参数位置要留给self不需要传参 在类的方法内部想要调用类属性和其他方法用self.属性或self.方法
class Food:drink 可口可乐def hambage(self):print(香辣鳕鱼堡)def menu(self):self.hambage()print(self.drink,\n蛋挞)
KFC Food()
KFC.menu()初始化方法
当每个实例对象被创建时该方法内的代码无须调用自动运行 可以在初始化方法内部完成类属性的创建并设定初始值方便随时调用
class Musician: def__int__(self):print(这是初始化方法)
lisiMusician那么调用属性的代码就发生了改变
class Pre:def __init__(self,name,age):self.namenameself.ageagedef prin(self):print(%s的年龄是%d%(self.name,self.age))
liuPre(刘刘,20)#作为name和age的值传到Pre中
liu.prin()类的继承
子类有父类的属性和方法子类属于父类父类属于object类
class X():name1
class Y(X):pass #占位class Car:wheel4def run(self):print(有%d个轮子%self.wheel)
class BMW(Car):pass
BMW320BMW() #子类BMW实例化BMW320
print(BMW320.wheel)#有4个轮子类的多层继承 子类可以继承父类父类的父类父类的父类的父类语法同单层继承 类的多重继承 一个子类可以继承多个父类和子类相关性更强的父类会放在更左侧先在左侧父类找找不到再去右侧父类就近原则
类的定制
子类可以再继承的基础上进行个性化定制如创建新属性、新方法修改继承的属性和方法 属性方法名不同时创建相同名字时修改
#音乐人
class Musician():loveMusic True3 def intr(self):print(我喜欢音乐)print(我来自音乐界)def sing(self):print(我在唱歌)
# Rapper继承音乐人
class Rapper(Musician): #类的继承garrulous True #类的定制 增加属性def composition(self): #类的定制 增加方法print(我可以创作简单的歌词)def sing(self): #类的定制更改方法print(我以说的方式进行唱歌)csunYuk Rapper()
print(csunYuk.loveMusic)
print(csunYuk.garrulous)
csunYuk.composition()
csunYuk.sing()
#True
#True
#我可以创作简单的歌词
#我以说的方式进行唱歌也可以对实例化属性进行修改
模块
模块是一个将代码封装起来方便使用的py文件。里面可以有类、函数、变量。
a10;b1#变量print(a)#函数def math(a,b):#自定义函数 c0cabreturn c#math函数返回cclass Math:#类num1#属性def __init__(self,a):#初始化函数self.aadef plus(self):#方法print(self.num)import test.py#调用模块使用模块
1、import 语句 ⽤法import 模块名 例⼦import time;import csv
如何调⽤模块中的函数变量 ⽤法模块名.函数模块名.变量 2、from…import语句 ⽤法 从模块中导⼊⼀个指定的部分到当前模块函数、变量、类名 例⼦from csv import *默认将CSV模块中的所有函数、变量进⾏全部导⼊ 3、if __name____main__ ⽤法当运⾏的⽂件是程序的⼊⼝时则会执⾏if namemain’下的语句相反当运⾏的⽂件作为模块是被其他程序导⼊时代码if namemain’下的代码则不会执⾏
#不使用if __name____main__
#A.py
name 小刘
def fun_A():print(调用方法A)
def print_name():print(__name__的值是,__name__)
print_name()
fun_A()#做脚本运行时__name__的值是__main__,调用方法A
#B.py
import A#B运行输出__name__的值是A(值变成了模块名)调用方法A#使用if __name____main__
#A.py
name 小刘
def fun_A():print(调用方法A)
def print_name():print(__name__的值是,__name__)
if __name____main__print_name()fun_A()#做脚本运行时__name__的值是__main__,调用方法A
#B.py
import A
print_name()#B运行输出__name__的值是A,不会调用fun_A函数了