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)