python 函数的一些基本使用

本文章讲解了python 函数的一些基本使用

函数

语法

定义

无返回值

def print_123():#定义函数
    print("123")
print_123()#调用函数 输出123

一个返回值

def jiachen(A):
    return A+1,A+2
print(jiachen(1),type(jiachen(1)))#2 <class 'int'>
date,date1=jiachen(1)
print(date,date1)#2 3

多个返回值

返回时候用逗号隔开

def jiachen1(A):
    return A+1
print(jiachen1(1),type(jiachen1(1)))#(2, 3) <class 'tuple'>
形参

定义函数时候用到的定义参数

实参

真正运行时候用到的参数

def zzs(arg,arg1=1):
    print(arg,arg1)
zzs(1)#11
zzs(1,2)#11

有默认值的调用时候可以只输入没默认值的

如果输入默认值的默认值会更换

默认值参数需要放后面

因为数要根据位置去匹配

也可以通过调用时候输入来确定

def zzs(arg,arg1=1,arg2=1):
    print(arg,arg1,arg2)
zzs(arg1=2,arg=1,arg2=5)

会按照输入参数来确定输入

特殊参数
*args

一个或者多个参数 aegs 名字可以改 重点是星号

def zzs(arg,*args):
    print(arg,*args )#1 2 3 4 5
    print(args,type(args))#(2, 3, 4, 5) <class 'tuple'>
	#	print(type(*args)) 会报错 因为他是多个数
zzs(1,2,3,4,5)
**kwargs

一个或者多个关键字参数

一言概之,*主要使用在函数参数中,在定义函数中添加是为了在调用该函数时直接将多个参数转换成一个元组,而在调用函数时参数添加,是为了将列表/元组转化成多个参数。

也主要使用在函数参数中,在定义函数中添加是为了在调用该函数时可以添加任意个键值对转出一个字典,而在调用函数时在列表中添加,是为了将字典转化成多个参数。

如例子:

def func1(*a):
	print(a)
	
def func2(**b):
	print(b)
func1(1,2,3,4,5)			#这样可以将多个参数变成一个元组
func2(name='mr',age='22')	#这样可以将多个键值对变成一个字典
	
def f1(a,b,c):
	print(a)
def f2(name,age,sex):
	print(name)
l = [1,2,3]
d = {"name":'mr',"age":22,"sex":'boy'}
f1(*l)						#将列表、元组变成多个参数`
`f2(**d)						#将字典转成赋值参数,name='mr',age=22,sex='boy'`

func1(*l)					#先将参数转成多个参数,在函数参数中又转成元组`		
func2(**d)					#先将参数转成多个键值对,在函数参数中又转成字典`

结果:

(1, 2, 3, 4, 5)
{'age': '22', 'name': 'mr'}
1
mr
(1, 2, 3)
{'age': 22, 'sex': 'boy', 'name': 'mr'}
/

作用 在它之前的参数只能以位置参数形式传入

def hunhe(X1,Y1,/,X=None,Y=None):
    return X1,Y1,X,Y
print(hunhe(X1=1,Y1=2,X=3,Y=2))
#报错因为x1y1不是以位置参数传入的
*

作用 在它之后的参数只能以关键字参数形式传入

def hunhe(*,X1,Y1,X=None,Y=None):
    return X1,Y1,X,Y
print(hunhe(X1=1,Y1=2,X=3,Y=2))#(1,2,3,4)
print(hunhe(1,2,3,4))#报错
调用
def print_123():
    print("123")
print_123()#调用函数 输出123
PPPP=print_123 #获取函数
PPPP()#调用函数 输出123

嵌套函数

定义
def outer():
    def inner():
        print("inner")
    print("outer")
    return inner()
outer()
#outer
#inner

递归

定义

函数自身调用自身

应用

累加

def num(N):
    if N==1:
        return 1
    else:
        return num(N-1)+N
print(num(100))#5050

时间函数

定义
语法格式

class 类名:

注意 类名 尽量使用驼峰命名 单词首字符大写

class Person:
    name="张三"
    age=18
    gender="男"
    def  test():
        print("this is test")
    pass
初始化变量定义

定义在 初始化类 _ init_ 中

注 外部的是类变量 如果一个修改了 就全修改了需要实例化

class Person:
    def __init__(self,name,age,gender):
        self.name=name
        self.agr=age
        self.gender=gender
    def  print(self):
        return self.name,self.agr,self.gender
student1=Person("li",18,"男")
student2=Person("si",18,"nv")
print(student1.print())#('li', 18, '男')
print(student2.print())#('si', 18, 'nv')
类变量实例化

实例化前

class delivery:
    location="beixin"
    def __init__(self, id, from1, to, type):
        self.id=id
        self.from1 = from1
        self.to=to
        self.type = type
    pass
kuaiid1=delivery
kuaiid2=delivery
kuaiid1.location=2
print(kuaiid1.location)#2
print(kuaiid2.location)#2

实例化后

class delivery:
    location="beixin"
    def __init__(self, id, from1, to, type):
        self.id=id
        self.from1 = from1
        self.to=to
        self.type = type
kuaiid1=delivery(1,1,1,1)#实例化
kuaiid2=delivery
kuaiid1.location=2
print(kuaiid1.location)#2
print(kuaiid2.location)#beixin

若实例化后 无对象类变量继续修改实例化类变量类变量不会改变

但是修改其他的类变量 实例化类变量类变量也会改变

kuaiid1=delivery(1,1,1,1)
kuaiid2=delivery
kuaiid1.location=2
print(kuaiid1.location)#2
print(kuaiid2.location)#beixin

修改未实例化的类变量

kuaiid1=delivery(1,1,1,1)
kuaiid2=delivery
kuaiid2.location=2
print(kuaiid1.location)#2
print(kuaiid2.location)#2
继承

父类默认为object

class delivery(object):
    pass
suber()

寻找父类方法

suber(A,c)

从A类之后开始寻找

具体百度

_和 _ _

在类中实现私有和不被继承

_name 即外部人直接调用时候 用 . . 不出来

但是如果全拼的时候还是可以找到的

_ _funt()

双下划线方法 被调用时候 会被改名为类名加_ _funt()

达到不被调用效果 但是全拼还是可以调用的

注:python中没有私有的概念:这是约定的东西 是希望可以遵守

区快概念
date=1
def txt():
    date=2
    print(date)#2
print(date)#1
txt()
print(date)#1
装饰器

@ 叫语法糖

def decorate(text):
    def innter():
        print("内部1")
        text()
        print("内部2")
    return innter
@decorate
def fund():
    print("东西")

fund()

下面更无敌 上面的不可传参数

def decorate(text):
    def innter(*args,**kwargs):
        print("内部1")
        text(*args,**kwargs)
        print("内部2")
    return innter
@decorate
def fund(i):
    print(f"东西{i}")

fund(1)

本文章还较为残缺 后续补 全随缘

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zzsaixuexi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值