python 函數 類 模塊

python基礎語法5

  • 函數
    • 作用域
    • 函數參數
    • 函數對象
    • 無名函數
    • 回調函數
    • 函數嵌套
    • 類的創建
    • 類的調用
    • 初始化方法
    • 類的繼承
      • 類的定制
  • 模塊
    • 使用模塊

函數

封裝好,進行某種功能

del 函數名(參數):函數體return 返回值(可以沒有return語句)

作用域

在函數內定義的變量,僅能在函數內部使用,這是局部變量
函數之外的定義與賦值的變量,可以再任何地方使用,這是全局變量
global語句,可以將局部變量變成全局變量global 函數名

函數參數

位置參數:參數的順序和個數和函數定義中一致

sum=0
def math(a,b,c):sum=a+b+creturn sum
a=1;b=2;c=3	
math(a,b,c)#a,b,c 依次傳入math函數

默認參數:必須放在位置參數后面

def menu(hamburger,drinl,snacks='蛋撻'):print(('漢堡選擇:' + hamburger)print('飲料選擇:' + drink)print('小食選擇:' + snacks + '\n')
menu('香辣雞腿堡','可樂')
#打印結果:香辣雞腿堡,可樂,蛋撻
menu('香辣雞腿堡','可樂','薯條')
#打印結果:香辣雞腿堡,可樂,薯條(給了3個參數。第3個參數被更新)	

不定長參數:*參數名,當傳入參數數量不確定時使用,數據類型是元組(tuple),可以用for來循環遍歷

def math(a,*b,c=1):print('a'=a)print('c'=c)for i in b:print(b)
math(123,11,22,33,c=2)

關鍵參數:使用偽參數(形參)的名字來指定其對應的實參(傳入的變量)

def math(a,b):x=a-breturn x
y=math(b=3,a=7)

字典傳參
1.關鍵參數作為字典接收

def dic(**args):for s,t in args.items():print(s,':',t)
dic(a=20,b=30,c=50)
#a:20
#b:30
#c:50 args變成一個字典

2.將字典展開并接收

def dic(a,b,c):print(a,b,c)
d={'a':20,'b':30,'c':50}
dic(**d)
#20 30 50
#字典d被展開到偽參數a,b,c上

函數對象

在函數名末尾不加括號,只寫名稱的格式所表示的是函數本身,我們將其稱之為函數對象,可以像值一樣將其帶入到變量中去

def printHello(name):print('hello',name)
func=printHello#func是函數對象
func('siri')
#打印結果是hello siri
#將函數printHello帶入到func,func可以作為函數使用	

無名函數

進行簡單處理的函數,可以使用關鍵字“lambda"來記述,這種寫法稱為無名函數()

#函數
def lo(a):return a.lower()
#無名函數
lo=lambda s:s.lower()
print(lo('HELLO'))#輸出 hello	

回調函數

函數可以將別的函數作為參數使用,被作為參數使用的函數被稱為回調函數

def calcdisp(a,b,callback):print(callback(a,b))
def calllback(a,b):return (a+b)
calcdisp(3,5,callback)#輸出值是8
#簡化寫法
calcdisp(3,5,lambda a,b : a + b)#callback被無名函數替代

函數嵌套

可以定義函數中的函數,內部函數稱為本地函數

def func1():def func2():print(1)print(2)func2()#調用內部函數
func1()#調用外部函數
#在這里不能調用func2,func2是func1的內部函數,作用域在func1內

類的創建

類的創建:class 類名(類名首字母大寫):
類的屬性創建:賦值語句
類的方法創建:def 方法名(self):
其中,self代表著實例化對象,是所有實例的替身

class Math:type_1=int_true#創建屬性def plus(self):#定義方法print(a+b)

類的調用

類的實例化:例如coke=water(),表明water這個類創建了一個叫做coke的實例,這個實例可以調用water類中的屬性和方法

class Food:drink = '可口可樂'def hambage(self):print('香辣鱈魚堡')
KFC=Food()#實例化類math,number為實例化對象,即self=number
print(Food.drink)#調用實例化對象的屬性type_1
Food.hambage()#調用了實例化對象的方法plus

注意:用def創建方法時,第一個參數位置要留給self,不需要傳參
類的方法內部想要調用類屬性和其他方法,用self.屬性或self.方法

class Food:drink = '可口可樂'def hambage(self):print('香辣鱈魚堡')def menu(self):self.hambage()print(self.drink,'\n''蛋撻')
KFC = Food()
KFC.menu()

初始化方法

當每個實例對象被創建時,該方法內的代碼無須調用,自動運行
可以在初始化方法內部完成類屬性的創建,并設定初始值,方便隨時調用

class Musician:	def__int__(self):print('這是初始化方法')
lisi=Musician()

那么調用屬性的代碼就發生了改變

class Pre:def __init__(self,name,age):self.name=nameself.age=agedef prin(self):print('%s的年齡是%d'%(self.name,self.age))
liu=Pre('劉劉',20)#作為name和age的值傳到Pre中
liu.prin()

類的繼承

子類有父類的屬性和方法,子類屬于父類,父類屬于object類

class X():name=1
class Y(X):pass #占位
class Car:wheel=4def run(self):print('有%d個輪子'%self.wheel)
class BMW(Car):pass
BMW320=BMW() #子類BMW實例化,BMW320
print(BMW320.wheel)#有4個輪子

類的多層繼承:
子類可以繼承父類,父類的父類,父類的父類的父類,語法同單層繼承
類的多重繼承:
一個子類可以繼承多個父類,和子類相關性更強的父類會放在更左側,先在左側父類找,找不到再去右側父類(就近原則)

類的定制

子類可以再繼承的基礎上進行個性化定制,如創建新屬性、新方法;修改繼承的屬性和方法
屬性方法名不同時創建,相同名字時修改

#音樂人
class Musician():loveMusic = True3     def intr(self):print("我喜歡音樂")print("我來自音樂界")def sing(self):print("我在唱歌")
# Rapper繼承音樂人
class Rapper(Musician): #類的繼承garrulous = True    #類的定制 , 增加屬性def composition(self):  #類的定制, 增加方法print("我可以創作簡單的歌詞")def sing(self): #類的定制,更改方法print("我以說的方式進行唱歌")csunYuk = Rapper()
print(csunYuk.loveMusic) 
print(csunYuk.garrulous)
csunYuk.composition()
csunYuk.sing()
#True
#True
#我可以創作簡單的歌詞
#我以說的方式進行唱歌

也可以對實例化屬性進行修改
在這里插入圖片描述

模塊

模塊,是一個將代碼封裝起來方便使用的py文件。里面可以有類、函數、變量。

a=10;b=1#變量print(a)#函數def math(a,b):#自定義函數    c=0c=a+breturn c#math函數返回cclass Math:#類num='1'#屬性def __init__(self,a):#初始化函數self.a=adef plus(self):#方法print(self.num)import test.py#調用模塊

使用模塊

1、import 語句
?法:import 模塊名
例?:import time;import csv

如何調?模塊中的函數,變量
?法:模塊名.函數;模塊名.變量
2、from…import語句
?法: 從模塊中導??個指定的部分到當前模塊(函數、變量、類名)
例?:from csv import *,默認將CSV模塊中的所有函數、變量進?全部導?
3、if __name__=='__main__'
?法:當運?的?件是程序的??時,則會執?if name=='main’下的語句,相反,當運?的?件作為模塊是被其他程序導?時,代碼if name=='main’下的代碼則不會執?

#不使用if __name__=='__main__'
#A.py
name = '小劉'
def fun_A():print('調用方法A')
def print_name():print('__name__的值是',__name__)
print_name()
fun_A()#做腳本運行時:__name__的值是__main__,調用方法A
#B.py
import A#B運行,輸出:__name__的值是A(值變成了模塊名),調用方法A
#使用if __name__=='__main__'
#A.py
name = '小劉'
def fun_A():print('調用方法A')
def print_name():print('__name__的值是',__name__)
if __name__=='__main__'print_name()fun_A()#做腳本運行時:__name__的值是__main__,調用方法A
#B.py
import A
print_name()#B運行,輸出:__name__的值是A,不會調用fun_A函數了

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

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

相關文章

activemq nodejs stomp 重連機制_5分鐘優劣分析 Kafka、RabbitMQ、RocketMQ、ActiveMQ消息隊列...

一、資料文檔Kafka:中,有kafka作者自己寫的書,網上資料也有一些。 rabbitmq:有一些不錯的書,網上資料多。 zeromq:少。沒有專門寫zeromq的書,網上的資料多是一些代碼的實現和簡單介紹。 rocketm…

excel保存快捷鍵_干貨 | 快速提高工作效率的電腦快捷鍵!

點擊標題下「藍色微信名」可快速關注隨著科學技術的發展,電腦已經成為每個人生活和工作的必備工具。然而,很多人在使用電腦的過程中非常依賴鼠標,導致雙手需要頻繁離開鍵盤,造成工作間歇中斷,導致用電腦處理工作的效率…

16位的數字高字節和低字節_掩蓋8位數字的較低和較高半字節| 8085微處理器

16位的數字高字節和低字節Problem statement: 問題陳述: To mask lower and higher nibble of 8-bit number using 8085 Microprocessor. 使用8085微處理器掩蓋8位數字的較低和較高半字節。 Algorithm: 算法: Load the content of accumulator A with…

釘釘 ISV 應用開發的一些心得

1. 背景 前段時間從前到后完整地做完了一個簡單的釘釘上的 ISV 應用 —— 猿活動。 最開始想做這么一個小工具,是想到,平時部門中經常會組織一些分享活動,但是這些分享活動卻沒有一個比較直觀的“站點”來記錄一次又一次的,很多人…

mcq 隊列_MCQ | 8086微處理器中的字符串操作指令

mcq 隊列Question 1: 問題1: A string is a collection of characters. Each Character is an of byte length which is stored at successive locations. In the 8086 microprocessor, which characters are considered in the string? 字符串是字符的集合。 每…

python 編碼 解碼 讀寫文件

python基礎語法6編碼解碼encode編碼與decode解碼讀寫文件編碼解碼 計算機是以二進制(0或1)存儲的,以字節為單位,1byte8bit,1KB1024B;1MB1024KB;1GB1024MB 編碼表:ASCII碼&#xff0…

電腦如何設置不休眠_電腦休眠了卻沒法喚醒?設置一下就好!

關注全新【HP惠課廳】,惠普消費新品全知曉逐步復工,辦公室環境又漸漸熟悉了起來午休外出吃飯、忙里偷閑散步、下班不想關電腦……隨手就把電腦休眠了開機也快,網頁和工作內容也不會被關掉休眠功能是挺好用的可有時候,無論怎么點開…

node+bower+gulp+webpack初見

2019獨角獸企業重金招聘Python工程師標準>>> node node模塊管理是通過NPM(即 Node Package Manage,是 NodeJS 模塊管理工具)來處理各模塊之間的依賴。NPM按樹狀結構來管理的,支持某模塊的不同版本。 [前提是本機已安裝…

Java LinkedList公共布爾boolean offerFirst(Object o)方法(帶示例)

LinkedList公共布爾布爾offerFirst(Object o)方法 (LinkedList public boolean offerFirst(Object o) method) This method is available in package java.util.LinkedList.offerFirst(Object o). 軟件包java.util.LinkedList.offerFirst(Object o)中提供了此方法。 This metho…

hbuilder php mysql_xampp本地服務器+HBuilder配置php環境

HBuilder配置PHP環境:下載,運行HBuilder編輯器打開右側小窗口,點擊設置圖標—>設置web服務器—>外置web服務器輸入你想要瀏覽器運行的URL,點擊兩個確定,再重新點擊設置web服務器,選擇PHP類文件(選擇之…

百度地圖手機和電腦不一致_你可能不知道的電腦手機冷知識

各位好久不見呀,自科部科科又回來了!平時我們經常使用電腦,你可能以為你對電腦和手機了如指掌,然而下面的冷知識你知道多少個?01一臺電腦可以有多個桌面如果你熟練的使用多個桌面這個技巧那么就可以躲著家長領導偷懶了…

嵌套字典|python_Python | 如果不是,則使用嵌套,根據銷售額計算折扣

嵌套字典|pythonInput same amount and calculate discount based on the amount and given discount rate in Python. 輸入相同的金額,并根據Python中的金額和給定的折扣率計算折扣。 The discount rates are: 折扣率是: Amount Discount0-5000…

RHEL 7 中 systemctl 的用法(替代service 和 chkconfig)

2019獨角獸企業重金招聘Python工程師標準>>> 1、systemctl是RHEL 7 的服務管理工具中主要的工具,它融合之前service和chkconfig的功能于一體。可以使用它永久性或只在當前會話中啟用/禁用服務。 systemctl可以列出正在運行的服務狀態,如圖&am…

python實戰——發郵件

from email import encoders#負責編碼 from email.header import Header#負責處理郵件頭 from email.mime.text import MIMEText#構造郵件內容 from email.utils import parseaddr, formataddr#將輸入內容格式化 import smtplib#發送郵件模塊def _format_addr(s):#處理格式化文…

js 刷新div_vue.js備忘記錄(五) vue-router

如果我們采用SPA(單網頁應用)的設計方式,服務器會把前端文件一次性發過來,前端通過監聽url的改變,選擇展示那些內容,也就是前端路由一. 如何改變url但是頁面不刷新?方式一: 改變哈希值hash比如,我們隨便找一個網頁我們在瀏覽器控制臺輸入發現網站的url有了些改變查看network卻…

css div撐滿窗口高度_如何使用CSS將div的高度設置為窗口的100%?

css div撐滿窗口高度Introduction: 介紹: Hello there developers! Well, certainly if you are reading this article then that means that you have run into some trouble while creating your web page or website and if you are a beginner in this field, …

.net core image怎么保存_輕量級Vue圖片上傳插件——Vue-core-image-Upload

介紹vue-core-image-upload 是一款輕量級的 Vue.js 上傳插件,它可以支持的圖片的上傳,裁剪,壓縮。它同樣也支持在移動端的圖片處理,它定義了諸多上傳周期,你可以自由的進行流程控制。Githubhttps://github.com/Vanthin…

mysql確認半同步命令_怎么判斷mysql是否是半同步復制

AFTER_COMMIT(5.6默認值)master將每個事務寫入binlog ,傳遞到slave 刷新到磁盤(relay log),同時主庫提交事務。master等待slave 反饋收到relay log,只有收到ACK后master才將commit OK結果反饋給客戶端。AFTER_SYNC(5.7默認值,但5.6中無此模式…

stl iterator_在C ++ STL中使用const_iterator訪問字符列表的元素

stl iteratorIn this example, we are declaring a character list and pushing the characters from A to Z using a for loop and push_back() function and then accessing the elements using const_iterator. 在此示例中,我們聲明一個字符列表,并使…

《Linus Torvalds自傳》摘錄

轉自:http://www.ruanyifeng.com/blog/2012/09/linus_torvalds.html作者: 阮一峰日期: 2012年9月 3日除了程序員,大概很少人知道Linux操作系統。它的發明者Linus Torvalds,知道的人就更少了。他本人也很低調&#xff0…