python 函数可以作为容器对象的元素_python第十二天, 三元表达式, 函数对象,名称空间与作用域,函数的嵌套定义...
復習
1. 字符串的比較:
2. 函數的參數:形參與實參
3. 實參的分類:位置實參與關鍵字實參
4. 形參分類:
1.無值位置形參
2.有值位置形參
3.可變長位置形參
4.有無值關鍵字形參
5.可變長關鍵字形參
5. 打散機制
今日內容
1. 函數默認值的細節。*
2. 數據類型的補充:語法簡單,經常去使用就OK ***
----- 三元表達式? |? 列表推導式? |? 字典推導式
3. 函數對象:函數名的各種應用場景? *****
4. 名稱空間與作用域:解釋變量名重復與從圖沖突問題? *****
5. 函數的嵌套定義:在函數內部定義函數? *****
函數默認值的細節
如果函數的默認參數,它的默認值為變量,在所屬函數定義階段執行時就被確為當時變量存放的值。
a = 100
def fn(num=a):
print(num) # 此處打印的值還是100
a = 200 # 此處再次賦值的200并沒有被帶入函數中
fn()
三元表達式
三目運算符:用于簡化 if ...else... 的語法:
----- 只能解決 if...else...結構,其他 if? 分支結構都不管
-----一個分支提供一個結果,如果一個分支提供了多個結果,將多個結果通過元祖返回
a = int(input('輸入:'))
b = int(input('輸入:'))
res = a if a > b else b
print(res)
列表與字典推導式
---快速生成列表或者字典的語法糖。而且還能在生成過程中添加簡單的邏輯
1 . 能被列表推導式推到的數據源,必須在循環取值時可以得到一個值
ls = [v for v in range(1,6)]
print(ls) # [1, 2, 3, 4, 5] 快速的創建一個字典
ls = ['奇數'if v %2 ==0 else '偶數' for v in range(1,6)] # 可以使用if...else 與for循環連用,此處if后的v就是經過for循環的v
print(ls) # ['偶數', '奇數', '偶數', '奇數', '偶數']
2. 能被字典推導式推導的數據源,必須在循環取值時可以被解壓賦值為兩個值
ls = [['A',1],('B',2)]
res = {k.lower():v for k,v in ls} # 字典推導式可以for循環遍歷列表總的元素,然后用k,v來接受,來作為它的key和value 還可以對key加功能,比如此處的lower
print(res) # 此處的結果為{'a': 1, 'b': 2}
函數對象
在python中,所有變量存放的值,只要是地址,我們就稱之為對象
-----所有的變量都是用來存放地址的,所以都是對象
-----存放整型的地址就是整型對象 |? 存放函數的地址就是函數對象? |? 存放文件的地址就是文件對象
函數對象:存放函數地址的變量,就是函數對象
def fn():pass
my_fn = fn
# my_fn 存著函數fn()的函數地址,所以都是函數對象,函數對象的使用就是函數對象加()來調用函數
my_fn() # 可以這樣來使用
函數對象的應用場景
1. 函數對象()就是調用函數
def fn1():
pass
fn1() # 普通的函數調用
2. 函數對象可以直接作為變量賦值給其他變量
def fn2():
pass
my_fn = fn2
print('>>>',my_fn,fn2) # 此處打印的地址一致,說明函數對象可以作為變量來賦值給其他變量
my_fn() # 依然能調用 此處my_fn 等同與所定義的 fn2 函數
3. 函數對象可以作為函數的參數
def fn3(func): # 所以此處的fnnc 就等同與my_fn 和 fn2
func()
fn3(my_fn) # 此處把my_fn作為了 func的實參所以這個函數所執行的就是fn2函數
4. 函數對象可以作為函數的返回值
def fn4():
return my_fn # 此處這個函數的返回值是my_fn
my_fn2 = fn4() # s所以此處的my_fn2的功能就是my_fn而my_fn的功能是fn2,所以等同于fn2
5. 函數對象可以作為容器類型的成員
ls = [my_fn,my_fn2] # 函數的對象可以作為容器的元素。如果調用,也具有函數的功能
print(ls[0]()) # 可以按照索引來調用
名稱空間并不能
隊列存儲方式: 先進先出
堆棧存儲方式:先進后出
名稱空間:就是名字與地址的對應關系,可以被python解釋器遍歷查找,采用堆棧存儲方式
三種名稱空間:
1. Built - in : 內置名稱空間,系統級,一個,隨解釋器執行而產生,解釋器停止而銷毀
2. Global : 全局名稱空間,文件級,多個,隨所屬文件加載而產生,文件運行完畢后銷毀
3. Local : 局部名稱空間,函數級,多個,隨所屬函數執行而產生,函數執行完畢后銷毀
注:文件的 if ,while,for ,with,這些能產生縮減的關鍵字并不能產生名稱空間
4. 加載順序? Bulit-in? >? Global? >? Local
函數嵌套定義
概念:在一個函數內部定義另一個函數
def outer():
print('outer run')
a = 10 # 函數對象 (變量) 與普通(對象)變量一樣,在函數內部定義,隨函數調用而產生
# 調用結束而銷毀,所以只能在函數內部調用
def inner():
print('inner run')
inner() # 此處inner必須在函數內部調用,在外部是無法調用
outer()
作用域
作用域:變量(名字 | 對象) 起作用的范圍
四種作用域
1. Built-in 內置作用域:作用所有文件的所有地方
2. Global 全局作用域 :作用當前文件的所有地方
3. Enclosing 嵌套作用域 :作用當前函數以及內部被嵌套的函數
4. Local 局部作用域 :? 作用當前函數內部
注意:
不同作用域之間名字不沖突,來達到名字的重復的使用
每個作用域優先使用自己作用域中的名字,沒有再找到更大的名稱空間,直到內置。再找不到就會報錯
查找順序:Local? >? Enclosing? > Global? >? Built - in
day_12函數默認值,數據類型的補充,函數對象名稱空間與作用域,函數的嵌套定義
復習, 昨天講了字符串的比較,按照從左往右比較每一個字符,通過字符對應的ASCII碼進行比較 函數的參數,‘ 實參與形參 形參:在函數定義時()中出現的參數 實參,在函數調用時()中出現的參數 實參的 ...
python12--字符串的比較 函數的默認值的細節 三元表達式 函數對象 名稱空間 作用域 列表與字典的推導式 四則運算 函數的嵌套
復習 ? 1.字符串的比較; 2.函數的參數; ******實參與形參的分類: 3.函數的嵌套調用: ? ? # 字符串的比較# ?-- 按照從左往右比較每一個字符,通過字符對應的ascii進行比較 ...
python 函數的名稱空間及作用域
一:名稱空間 1:什么是名稱空間: 名稱空間即:儲存名字與值的內存地址關聯關系的空間 2.名稱空間的分類: 內置名稱空間:存儲器自帶的一些名稱與值的對應關系,如:print,len,max等; 生命周 ...
Python 函數對象-函數嵌套-名稱空間與作用域-閉包函數
今日內容: 1. 函數對象 函數是第一類對象: 指的是函數名指向的值可以被當中數據去使用 1.可以被引用 2.可以當做參數傳給另一個函數 3.可以當做一個函數的返回值 4.可以當做容器類型的元素 2. ...
day12 函數對象,名稱空間與作用域
""" 今日內容: 1.函數參數傳值細節 2.三元表達式 3.列表及字典推導式 4.函數對象 5.名稱空間與作用域 6.函數的嵌套定義初識 ""&qu ...
PYTHON-函數對象,嵌套,名稱空間與作用域,閉包函數
一 函數是第一類對象,即函數可以當作數據傳遞 1 可以被引用 2 可以當作參數傳遞 3 返回值可以是函數 3 可以當作容器類型的元素 def foo(): return len f = foo pri ...
python學習Day12 函數的默認值、三元表達式、函數對象(函數名)的應用場景、名稱空間與作用域
復習 1.字符串的比較: -- 按照從左往右比較每一個字符,通過字符對應的ascii進行比較 2.?函數的參數 : 1)實參與形參:? ? ? ?-- 形參:在函數定義時()中出現的參數 ? ? ? ...
Python--day12(三元表達式、函數對象、名稱空間與作用域、函數嵌套定義)
今日主要內容 1.? 函數默認值細節(*) 2.? 數據類型補充:三元表達式.列表推導式.字典推導式 (***) 3.? 函數對象:函數名的各種應用場景 (*****) 4.? 名稱空間與作用域:解釋 ...
day12函數,三元表達式 ,列表推導式 ,字典推導式,函數對象,名稱空間與作用域,函數的嵌套定義
復習 # 字符串的比較 # -- 按照從左往右比較每一個字符,通過字符對應的ascii進行比較 # 函數的參數 # 1)實參與形參: # -- 形參:在函數定義時()中出現的參數 # -- 實參:在函 ...
隨機推薦
OC基礎--結構體 枚舉做類成員屬性
結構體? 枚舉作類的成員屬性: 定義一個學生類 性別 -- 枚舉 生日 入學日期? 畢業日期? --? 結構體 代碼示例: 聲明文件 Student.h: #import
Jfianl
http://www.oschina.net/question/257183_149268----------- 添加Handler: me.add(new?ContextPathHandler(&q ...
C++的CreateThread實例
function CreateThread(? lpThreadAttributes: Pointer;?????????? {安全設置}? dwStackSize: DWORD;?????????? ...
根據ID獲取CEdit的句柄實例
MyApp.h和MyApp.cpp #ifndef MY_APP_H_ #define MY_APP_H_ #include class CMyApp:public ...
Java Hour 49 保存和查詢歷史的Weather
吾一直堅信,是需求的不斷變化推動了架構的不斷演變. 新的需求 能夠查看指定日期的Weather,因為客戶想要比較昨天和今天的天氣情況,所以需要能夠查詢歷史數據的功能. 1 能保存當前的天氣到數據庫 2 ...
大腦提取每一個體素26領域的matlab代碼
%-------------- outer loop for x= 1:40 for y =1:48 for z =1:34 %----------inter loop x=20; y=30; z=1 ...
前端筆試題目總結——應用JavaScript函數遞歸打印數組到HTML頁面上
數組如下: var item=[{ name:'Tom', age:70, child:[{ name:'Jerry', age:50, child:[{ name:'William', age:20 ...
IHttpModule接口事件執行 獲取Session 找了很多國內的都不對,從國外轉過來一個測試可用的
我的環境,asp.net4.0框架集 不多說上代碼 public class MyHttpModule : IHttpModule { public void Init(HttpApplication ...
Silverlight學習(二)
好久沒來寫博客了,這期間經歷了春節,也因為忙于一個項目,所以博客被疏忽了.最近一段時間一直在用silverlight做項目,從來一開始的不熟悉漸漸的開始上手.今天記錄一下自己學習prism的一些sam ...
總結
以上是生活随笔為你收集整理的python 函数可以作为容器对象的元素_python第十二天, 三元表达式, 函数对象,名称空间与作用域,函数的嵌套定义...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WWDC23日期官宣 北京时间6月6日凌
- 下一篇: c调python_py_initiali