Python遞迴演算法以及命名空間

2021-10-13 21:41:20 字數 2121 閱讀 8205

遞迴演算法

遞迴是一種程式設計的思路或者可以說是一種演算法,並沒有標準的語句結構或者語法等限制,只需滿足條件即可算是遞迴。

遞迴條件

遞迴例子

10的集乘:

10的集乘相當於,109的集乘,9的集乘相當於98的集乘,以此類推,為遞迴條件

而當乘到1時,集乘結束,為基線條件

# 集乘的遞迴

deffn

(a):

if a ==1:

return

1return a * fn(a-1)

data = fn(10)

print

(data)

回文:

字串前半段和後半段一一對應的稱之為回文,列如zxcvbvcxz。

'''

'''# 回文的遞迴思路

deffn

(a):

iflen

(a)<=1:

data =

true

return data

elif a[0]

!= a[-1

]:data =

false

return data

return fn(a[1:

-1])

s ='asdfdsa'

a = fn(s)

print

(a)

命名空間

命名空間是乙個專門用來儲存變數的容器,python中的命名空間是以字典的的形式存在的。

命名空間可以用關鍵字 locals() 來獲得

全域性作用域命名空間

在全域性作用域中呼叫locals()時可以獲得全域性作用域命名空間

在全域性作用域中呼叫locals()時不僅會輸出全域性變數,函式等還會輸出一些內建的變數,下面我就就來解讀一下個內建變數的含義,出現在全域性變數中的key,都是全域性變數。

內建變數

說明name用來標識模組的名字。這裡分兩種情況:如果是主模,此模組名字預設是__main__;不是主模組,則此模組名字為檔案名字。

doc用來訪問模組,類宣告或者函式的宣告中第乙個未被賦值的字串.

package用於避免模組名衝突

loader儲存物件本身

file程式儲存的路徑

builtins用來儲存python中一些內建的函式,比如說max,min這類不用建立就能使用的函式

還有的』spec』: none, 『annotations』: {},『cached』: none,作用未知,等之後我搞清楚了回來這個更新的。

函式命名空間

在函式中使用locals()即可獲取到函式內部的命名空間,如果在函式中想要獲取全域性作用域命名空間可以使用==globals()==方法

deffn(

):data_fn =

locals()

print

('我是函式內部的命名空間'

, data_fn)

# 我是函式內部的命名空間 {}

data_all =

globals()

print

('我在函式內部獲取到了全域性作用域'

, data_all)

# 我在函式內部獲取到了全域性作用域 , '__builtins__': , '__file__': 'i:/遞迴演算法.py', '__cached__': none, 'fn': }

data =

locals()

print

('我是全域性命名空間'

, data)

# 我是全域性命名空間 , '__builtins__': , '__file__': 'i:/遞迴演算法.py', '__cached__': none, 'fn': , 'data': }

Python變數以及命名規則

一 在python中什麼是變數呢?簡單粗暴的講,變數就是會變的量。計算機當中的變數,可以表示任意東西。變數可以是字串 數字 布林型。也可以是列表 元組 集合 物件和方法等。二 那在初學python時,怎麼看變數是屬於什麼型別呢?要看變數後面跟的是什麼了。舉個例子 name 張三 這個變數就屬於字串型...

python遞迴 演算法 遞迴(Python解釋)

通俗一點來說,遞迴就是一種在函式內呼叫自己的演算法。每一級呼叫都會有自己的引數。每一次呼叫都會有一次返回。可能是返回自己,繼續遞迴 也可能是返回特定值,結束遞迴。遞迴解釋 優點 直觀,實現簡單,可讀性好。缺點 會有重複的呼叫 優化裡會說明 占用空間大,遞迴太深,會造成棧溢位 呼叫太多,不給你呼叫了 ...

python遞迴實現 遞迴演算法 python實現

在函式的定義中對這個函式自身的呼叫,就是遞迴。遞迴結構中,遞迴的部分必須比原來的整體簡單,才有可能到達某種終結點 出口 而且必須存在非遞迴的基本結構構成的部分,否則會無限遞迴。學習目標 程式設計實現斐波那契數列求值 f n f n 1 f n 2 程式設計實現求階乘 n 程式設計實現一組資料集合的全...