资讯专栏INFORMATION COLUMN

python_bomb----函数

oogh / 1451人阅读

摘要:函数的定义范例总结无参函数名快注释函数体定义函数,并不会执行函数体里面的内容调用函数的过程函数里面嵌套函数调用外层函数时,内层函数不会执行变量参数定义函数时的变量,称做形参,可以任意命名真实的数据信息,调用函数时传递的参数,称为实参是形参是

函数的定义

范例

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42223.html

相关文章

  • python_bomb----高阶函数

    摘要:高阶函数实参是一个函数名函数的返回值是一个函数传递的参数包含函数名。内置高阶函数函数函数接收两个参数一个是函数一个是序列将传入的函数依次作用到序列的每个元素并把结果作为新的返回。 高阶函数 实参是一个函数名 函数的返回值是一个函数 print(abs(-10)) f = abs print(f(-10)) #传递的参数包含函数名。 def myfun(x,y,fun): ...

    Pocher 评论0 收藏0
  • python_bomb----函数高级特性(生成器)

    迭代 可以通过 for 循环来遍历 list 或 tuple,这种遍历我们称为迭代(Iteration)只要是可迭代对象,都可以迭代,比如字典默认情况下,字典迭代的是key值如何让判断一个类型是否可迭代 from collections import Iterable #导入collections模块的Iterable类型判断方法 print(isinstance({abc:1},Itera...

    JouyPub 评论0 收藏0
  • python_bomb----排序函数

    摘要:和列表里提供了方法,其他数据类型不能用可以对任何可迭代对象排序方法支持原地排序,变量排序后,变量本身改变方法返回一个新的列表,并不改变原变量的内容不改变原有列表次序默认和方法由小到大排序,时,从大到小排序字典排序商品名称,数 li.sort()和sorted() 列表里提供了sort方法,其他数据类型不能用 sorted可以对任何可迭代对象排序 sort方法支持原地排序,变量排序后...

    darcrand 评论0 收藏0
  • python_bomb----包

    摘要:什么是包为了组织好模块,会将多个模块分为包。处理包也是相当方便的。简单来说,包就是文件夹,但该文件夹下必须存在文件。最简单的情况下,只需要一个空的文件即可。当然它也可以执行包的初始化代码包底下也能包含包,这和文件夹一样,还是比较好理解的。 什么是包? 为了组织好模块,会将多个模块分为包。Python 处理包也是相当方便的。简单来说,包就是文件夹,但该文件夹下必须存在 __init__....

    LeanCloud 评论0 收藏0
  • python_bomb----小白学装饰器

    什么是装饰器? 装饰器就是用来装饰函数。 想要增强原有函数的功能 但不希望修改原有函数的定义 在代码运行期间动态增加功能的方式 函数嵌套函数 调用方式:原函数 = 外层函数(原函数名)原函数 def desc(fun): def add_info(): print(happy today) fun() print(westos_linux...

    mikasa 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<