函数的定义

  • 范例

def print(self, *args, sep=' ', end='n', file=None):

  • 总结
  • 无参

def 函数名():

快注释
函数体

定义函数,并不会执行函数体里面的内容

def hello():
    print('hello')
    print('sheenstar')

调用函数的过程

hello()

函数里面嵌套函数

def sheen():
    print("happy is ...")
    def star():
        print("sheen")

调用外层函数时,内层函数不会执行

sheen()

happy is ...

变量参数

定义函数时的变量,称做形参,可以任意命名
真实的数据信息,调用函数时传递的参数,称为实参

def game(guess):    #guess是形参
    print(guess>2)

game(3)    #3是实参
number = 1
game(number)    #number是实参

形参

形参可分为:位置参数,默认参数,可变参数,关键字参数

  • 位置参数

形参必须和实参个数一致,按照位置传递参数

def getinfo(name, age):
    print(name, age)


getinfo('sheen', 17)
getinfo(age=13, name='star')

sheen 17
star 13

图片描述

  • 默认参数

实参和形参的个数可以不一致

def mypow(x, y=2):
    """
    求x的y次方,y默认值为2
    :param x: value
    :param y:
    :return:
    """
    print(x ** y)

mypow(2)
mypow(2, 3)

4
8

图片描述

  • 可变参数
# 可变参数
def mysum(*args):
    """
    用户可以传入任意个数值,计算数值的和
    注意:*args是可变参数;
        args是元组数据类型
        args可以改称其他,因为是形参
    mysum(1,2,45,787,...)
    :return:
    """
    print(args)  # 元组
    sum = 0
    for item in args:
        sum += item
    print(sum)


mysum(1, 2, 3, 4, 5, 6, 7)


28

图片描述

  • 关键字参数

    **kwargs是一个字典,可以传递任意多的key-value对
def getstinfo(name, age, **kwargs):
    print(name, age)
    print(kwargs)


getstinfo('sheen', 19, hobbies=['code', 'flower'], gender='female')

sheen 19
{'hobbies': ['code', 'flower'], 'gender': 'female'}

动态添加函数成员

def fun():
    print(fun.x)
fun()    #报错,AttributeError: 'function' object has no attribute 'x'

动态添加

fun.x = 3
fun()

3

动态删除

fun.x = 3
del fun.x
fun()    #报错,AttributeError: 'function' object has no attribute 'x'

函数返回值

返回值:函数运算的结果,还需要进一步操作时,给一个返回值'return'
'return'用来返回函数执行结果,如果没有返回,默认为‘none’
遇到'return',函数执行结束,后面代码不会执行,(yield)
python可以间接返回多个值;原理:返回一个元组,再对元组进行解包

def myfun(x,y):
    return x+y,x-y,x*y,x**y

m=myfun(3,2)
print(m)

(5, 1, 6, 9)

变量的作用域

变量:局部变量,全局变量
局部变量:在函数体内定义的变量,只在函数内有意义,函数执行结束后,变量不存在
不可变数据类型:函数内部改变,不会影响外部变量值
可变数据类型:函数内部改变,会影响外部变量值

a= 1
print('outsides',id(a))
def fun():
    a=5    #局部变量
    print('besides:',id(a))
fun()
print(a)

outsides 9326560
besides: 9326688
1
# 全局变量:global
a= 1
print('outsides',id(a))
def fun():
    global a    #a为全局变量
    a=5
    print('besides:',id(a))
fun()
print(a)
print(id(a))

outsides 9326560
besides: 9326688
5
9326688

图片描述

函数补充

给变量和返回值都设定默认数据类型,不是此类型,函数仍能执行

def myadd(x:int,y:int) -> int:
    return x+y

print(myadd(1.0,8))

9.0
  • 参数数据类型的判断

isinstance()

>>> isinstance(1,int)
True
>>> isinstance([1,2],int)
False

SheenStar
168 声望26 粉丝

祝你坚强