python学习笔记,【四】,function,功能,方法

def
只要python看到这个词,他就知道了,好der,,这是一个方法,一个独立的代码块,这个人想创建一个独立的方法代码块;
然后你就能看到编辑器下面多了一个function
def say_bagayalu():当编辑器看到这个:,就知道了,这后面的都是这个方法中的内容了,注意!:python严格执行缩进,只要你是在这个方法的缩进范围之内,就是方法的内容;出了这个缩进范围将不再是方法内的代码;

def say_bagayalu():
    print("八嘎雅鹿")
    
print("这个方法出了缩进范围了,方法被调用才会执行,所以这个会先于其他方法执行")

def lan():
    print("另一个方法")
    
say_bagayalu() //方法调用
lan()  //方法调用
///out///
这个方法出了缩进范围了,方法被调用才会执行,所以这个会先于其他方法执行
八嘎雅鹿
另一个方法

带参数的方法
无返回值
调用方法时,必须附带参数,如果没有给出参数则会抛出异常
TypeError: sal() missing 1 required positional argument: 'text'

def sal(text):
    print(text)
sal("文本内容")
def sal(text,title):
    print(text,title)
sal("文本内容","文本标题")

偶然发现,python只允许做1000次递归深度
超出了会报这玩意
RecursionError: maximum recursion depth exceeded while calling a Python object

def sal(count):
    print(count)
    count = count + 1
    sal(count)
    
sal(0)

解决办法:
在脚本中加入代码,mua的真是绝了,还没学完就要开始解决bug了;

import sys
sys.setrecursionlimit(2000)

有个奇怪的现象就是这样虽然可以解决问题,但是我看递归跑到2670左右就不会再打印消息到控制台了。。真是奇怪,但是程序还没有停,然后过一会就报错停止
进程已结束,退出代码-1073741571 (0xC00000FD)
不知道是不是oom了,没道理啊。或许这就是系统默认限制1000次递归的原因吧。

这是Microsoft“堆栈溢出/堆栈耗尽”错误代码0xC00000FD的有符号整数表示。

您可以尝试增加可执行文件的堆栈大小,如下所述:How to overcome Stack Size issue with Visual Studio (running C codes with big array)

每当你在windows中看到奇怪的、大的负退出代码时,把它们转换成十六进制,然后在ntstatus错误代码中查找它们http://msdn.microsoft.com/en-us/library/cc704588.aspx

你可以用这样的方法:

if __name__ == '__main__':
    sys.setrecursionlimit(100000)
    threading.stack_size(200000000)
    thread = threading.Thread(target=your_code)
    thread.start()

这解决了我的递归限制和堆大小限制。


带返回值的方法:

def sal(count):
  count = count+1
  if count > 10:
      return count

result = sal(10)
print(result)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值