nonlocal 与 global
nonlocal 与 global global关键字用来在函数或其他局部作用域中使用全局变量 nonlocal关键字用来在函数或其他局部作用域中使用外部嵌套函数内的变量 def getPath(node, target): result = [] def dfs(node, target, path): path.append(node) if node.val == target.val: nonlocal result result = path.copy() return
阅读更多如何在多个编程语言间切换自如
基本思路 基本结构和控制流要记住,也就是熟悉基本语法 识别各自语言的特性,也就是知道高级特性 本文主要是熟悉基本语法,搞清楚不同的编程语言怎么描述相同的功能的。对于高级特性,点到为止。 数据结构 栈 Go stack := make([]string, 0, 10) // 入栈 stack = append(stack, "A") // 出栈 v := stack[len(stack)-1] stack = stack[:len(stack)-1] // 判断是否为空 isEmpty := len(stack) == 0 Python L = [] L.append('D') # 入栈 L.pop() # 出栈 L[-1] # peek 队列 Go queue := make([]int, 0) // 入队 queue = append(queue, 10) // 出队 v := queue[0] queue = queue[1:] // 判断是否为空 isEmpty := len(queue) == 0 Python L = [] L.append('D') # 入队 L.pop(0) # 出队 L[0] # peek 控制流 循环 Go /* Go 只有 for 循环 */ for i, val := range arr { // ... } for i := 0; i < len(arr); i++ { // ... } Python for i in range(10): pass for i in range(0, 10, 1): pass for val in arr: pass for i, val in enumerate(arr): pass else pass while len(queue) > 0: pass else pass while flag: print(str(flag))
阅读更多生成器 迭代器 装饰器
Magic Python -> ch4 heapq 是 Python 的一个标准模块,它提供了堆排序算法的实现。 带 yield 的函数是一个生成器,而不是一个函数了。这个生成器有一个函数就是 next 函数,next 就相当于“下一步”生成哪个数,这一次的 next 开始的地方是接着上一次的 next 停止的地方执行的。生成器中的 yield,可看做 “return” 。
阅读更多