python设计自定义函数_python-自定义函数

函数定义:

def func_name (parameter,...):

# 处理逻辑

return(或者yield,也或者没有) some_value

def :关键字,是个可执行语句,在被调用之前,函数其实是不存在的

func_name : 函数名字

parameter: 函数参数,可以给定默认值(def func(parameter = 0): 这里就为parameter定义了默认值0)

函数的参数可以设定默认值

return (yield): 函数返回值 ,也可以没有返回值,需要根据需要而定

函数调用:

主程序调用函数时,必须保证这个函数此前已经定义过,不然就会报错。

python寻找变量的时候,会按照本地作用域、闭包、全局、内置这种顺序去查找

变量的作用域:

全局变量:定义在整个文件层次上 ,可以在文件内部任何地方被访问,包括函数内部,但是不能被修改(修改的话,需要在函数内部做特殊处理)

局部变量:定义在 函数内 ,如果不加特殊处理,python的解释器默认在函数内定义或者进行一些修改操作的都是局部变量

要在函数内部修改全局变量怎么办?

答:在函数内,用global关键字修饰全局变量,这里并不是重新声明,而是告诉解释器,函数内的这个变量和全局定义的是同一个,global起到的是标识的作用

函数内部定义的变量,和全局变量重名怎么办?

答:全局变量会被局部变量覆盖。

嵌套函数可以访问外部函数的变量,但是要修改,需要什么处理办法?

答: 在内部函数 该变量前 加 nonlocal关键字, 标识该变量 为 外部函数的变量

函数的嵌套函数内的变量, 跟外部函数的变量重名怎么办?

答: 内部函数的变量 会 覆盖 外部函数的变量

主程序调用函数时,必须保证这个函数此前已经定义过,不然就会报错

主程序调用函数时,必须保证这个函数此前已经定义过,不然就会报错

def本身就是一个声明,如果不执行,就不涉及对对象的引用,也就不会报错,即使这时在函数内部引用了一个不存在的变量。关键在于执行的时候,被引用的变量或者函数是否被加载。

python语言的特点之一: dynamically typed ,也就是 ”多态”

可以接受任何数据类型(整型,浮点,字符串等等),Python 不用考虑输入的数据类型,而是将其交给具体的代码去判断执行

这个特点,也会带来一些问题,必要时,需要在函数的开头加上类型检查的相关处理

python语言的特点之一:函数内可以嵌套函数 , 内部函数的作用域仅限于外层嵌套函数内部,无法在外层函数以外 被访问

第一:提供了很好的封装(保护敏感数据不会在外层函数之外被访问到)

第二:提高效率,比如在递归函数中,参数类型检查 等操作,在外部函数完成, 实际的递归逻辑在内部函数中完成,这样就避免了每次递归都进行参数检查

python语言特点之一:闭包(closure)

类似于函数的嵌套,只是 外部函数返回的是一个函数 , 返回的函数还可以再接收相应参数

闭包优点: 让程序变得更加的 简洁易读

提高效率 : 有些程序需要返回执行一部分核心代码,而之前还需要额外的一些处理。就可以将额外处理的代码(比如,参数检查)放在外部函数内,需要反复执行的核心代码放在内部函数里。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值