python11-28筆記(1.6-1.7)

1.6 多類型傳值和冗余參數
多類型傳值:
比如def fun(x,y),定義2個形參
定義一個元組t=(1,2),如果把元組當做實參傳入到函數中,會報錯

如何將元組當做不同類型的參數傳入到函數中
fun(t) 代表傳入的是元組或者這樣調用
fun((1,2))
注意實參的個數要和形參一致,但是不能這樣傳入 fun(
t,1) 這樣會語法錯誤
也可以這樣傳參 fun(x=1,y=2),但是要和形參定義的名字一致

字典傳參
dic={"x":1,"y":2,"z":3}
fun(dic) "" 代表傳入的參數是字典類型

錯誤 dic={'a':1,'n':2,'c':3}
fun(**dic) 這樣傳參也是錯誤的 字典的key值必須和函數形參定義的一致

冗余參數:(處理多余實參)
有時候傳入實參的時候傳入了更多的參數,需要處理。
def fun(x,*args,**kwargs): x是命名參數 后面2個可以不傳入實參
In [26]: fun(2,2)
2
(2,) 第二個參數傳入
{}

In [27]: fun(2,2,y=2) 第三個參數傳入字典的key和value
2
(2,)
{'y': 2}

總結,冗余參數會傳到元組里,默認參數(y=xx,c=xx)會傳到字典里,或者直接用**dic傳入字典

#!/usr/bin/python
#coding:utf-8
import os
x='/proc/'
def fun(x):
if x.isdigit():
return True
return False
def meminfo(y):
pwd= x+y+'/status'#獲取進程文件的路徑
with open(pwd) as damem:
for p_da in damem:#對每個進程內存累加并得出總內存和占比
if p_da.startswith('VmRSS'):
p_mem = p_da.split()[1]
p_mem = float(p_mem)
return p_mem

for i in os.listdir(x):
if fun(i):
if meminfo(i) > 0:
print '進程號:%s 占用內存:%s k'%(i, meminfo(i))

1.7 函數的遞歸調用
定義函數的時候,在函數體內調用自身叫做遞歸,通常用作階乘計算,也可以用循環來實現

循環實現:
#!/usr/bin/python
def factorial(n):
sum=1
for i in range(1,n+1):
sum *=i
return sum

print factorial(5)

遞歸調用有一個前提,不能一直無限調用下去,必須有一個結束遞歸的條件
遞歸調用
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)

print factorial(5)

必須有最后的默認結果
if n == 0
遞歸參數必須向默認結果收斂的:
factorial(n-1)

轉載于:https://blog.51cto.com/4833797/2323489

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252911.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252911.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252911.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

session機制詳解以及session的相關應用

session是web開發里一個重要的概念,在大多數web應用里session都是被當做現成的東西,拿來就直接用,但是一些復雜的web應用里能拿來用的session已經滿足不了實際的需求,當碰到這樣的情況時候我們需要更加深入的理解session的機制&am…

(轉)Shell中獲取字符串長度的七種方法

Shell中獲取字符串長度的七種方法 原文:http://blog.csdn.net/jerry_1126/article/details/51835119 求字符串操作在shell腳本中很常用,下面歸納、匯總了求字符串的幾種可能方法: 【方法一】:利用${#str}來獲取字符串的長度 【方法二】:利用awk的length方…

linux下用core和gdb查詢出現段錯誤的地方

有些時候我們在一段C代碼的時候,由于對一個非法內存進行了操作,在程序運行的過程中,出現了"段錯誤"。呵呵,這種問題我想很多人會經常遇到。遇到這種問題是非常無語的,只是提示了"段錯誤"&#xff…

第一篇-Html標簽中head標簽,body標簽中input系列,textarea和select標簽

第十四周課程(1-12章節) HTML 裸體 CSS 穿華麗衣服 Javascript 動起來 一 HTML (20個標簽) 1.我們的瀏覽器是socket客戶端 2.一套規則,瀏覽器認識的規則 3.開發者: 學習html規則 開發后臺程序&#xff1a…

opencv3.2.0 Cmake 3.8.0 + tdm-gcc-5.1.0-3

實測 tdm-gcc-5.1.0-3 tdm32-1 32位版本無法正確編譯Opencv 3.2.0 會遇到諸多編譯問題 解決辦法 使用tdm-gcc-5.1.0-2 tdm64-1 64位版本轉載于:https://www.cnblogs.com/fundou/p/6710209.html

什么是商品屬性

一、什么是商品屬性: Definition of Product Attributes A product attribute is a characteristic that defines a particular product and will affect a consumers purchase decision. Product attributes can be tangible (or physical in nature) or intangibl…

linux用戶管理(1)----創建用戶(adduser和useradd)和刪除用戶(userdel)

arm linux的系統用戶管理: 1、刪除root用戶:deluser root2、刪除tt用戶:deluser tt3、建立root用戶:adduser root4、修改用戶密碼:登錄相應的用戶后,用passwd來修改密碼4、linux用戶和密碼的管理(ftp&#…

前端性能優化之圖像優化原理

前端性能優化中,圖像的優化是非常重要的一環,為什么要說圖像的優化呢,而不是我們常見的圖片優化?因為這里的圖像包括矢量圖和位圖,我們常說的圖片優化是指位圖的優化。這篇文章轉載至奇舞周刊,大佬總結的非…

Lua開發學習4-普通循環和迭代器循環

說句實話,每當看到Lua代碼,我都感覺是半個SQL代碼,寫起來還是感覺有點恐怖。 while循環: 與C#的while循環類似,沒有什么好說的; --------Lua的while循環 while(condition)dostatementsend For循環 exp1為起…

什么是js的嚴格模式

設立嚴格模式的原因: - 消除Javascript語法的一些不合理、不嚴謹之處,減少一些怪異行為; - 消除代碼運行的一些不安全之處,保證代碼運行的安全; - 提高編譯器效率,增加運行速度; - 為未來新版本的Javascrip…

Linux驅動設計ioctl函數的cmd參數不能為2

Linux驅動程序設計的時候偶然發現的ioctl()函數的cmd參數不能為2,如果為2,ioctl()函數返回-1,網上說就是這樣的,正常,不知道為什么,stack overflow上有一個外國學友的建議: “In general, you want to comp…

代碼解說Android Scroller、VelocityTracker

在編寫自己定義滑動控件時經常會用到Android觸摸機制和Scroller及VelocityTracker。Android Touch系統簡單介紹(二):實例具體解釋onInterceptTouchEvent與onTouchEvent的調用過程對Android觸摸機制須要用到的函數進行了具體的解釋。本文主要介紹兩個重要…

Effective_STL 學習筆記(四十四) 盡量使用成員函數代替同名的算法

有些容器擁有和 STL 算法同名的成員函數。 關聯容器提供了 count、find、lower_bound、upper_bound 和 euqal_range list 提供了 remove、remove_if、unique、merge 和 reverse 大多數時候應該用成員函數代替手寫算法,這樣做的兩個理由: 比起算法&#x…

(NFS移植到arm上)編譯portmap和nfs-utils

為了在播放機上實現NFS服務器的功能,我們已經在uClibc中打開了完整RPC支持,并且在新編譯的內核中打開了NFS服務器支持。此外還有兩個軟件包也是提供NFS服務所必需的:portmap和nfs-utils。portmap為RPC程序提供端口映射服務,nfs-ut…

HTML5上傳預覽

http://cobain-li.iteye.com/blog/2296538轉載于:https://www.cnblogs.com/winyh/p/7850049.html

支付寶支付

1 申請商戶平臺 2 申請開放平臺 3 申請APP支付 4 創建應用 (名稱,logo) 5 生成RSA秘鑰(公鑰,私鑰) 6 在應用中配置公鑰 7 配置其他內容,包括iOS bundle ID。配置安卓包名,和簽名。 獲取appid,公…

HttpRequest Java原生代碼封裝

HttpRequest Java原生代碼封裝 get提交 post提交 name1value1&name2value2 的形式 json形式兩種形式 package com.beisun.mbp.mbp.controller;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWrit…

Linux 系統目錄

/ 根目錄 /bin 存放必要的命令 /boot 存放內核以及啟動所需的文件等 /dev 存放設備文件 /etc 存放系統的配置文件 /home 用戶文件的主目錄,用戶數據存放在其主目錄中 /lib 存放必要的運行庫 /mnt 存放臨時的映射文件系統,我們常把軟驅和光驅掛裝在這里的…

linux多線程學習設置線程調度權限

pthread_setschedparam 設置線程的權限 int pthread_setschedparam(pthread_t target_thread, int policy, const struct sched_param *param) 參數 1. target_thread是使用pthread_create所獲得的線程ID。   2.線程的調度有三種策略:SCHED_OTHER、…

不可錯過的CMS學習筆記

引子 帶著問題去學習一個東西,才會有目標感,我先把一直以來自己對CMS的一些疑惑羅列了下,希望這篇學習筆記能解決掉這些疑惑,希望也能對你有所幫助。 CMS出現的初衷、背景和目的? CMS的適用場景? CMS的tr…