国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python函數(shù)的正確用法及其注意事項(xiàng)

這篇具有很好參考價(jià)值的文章主要介紹了Python函數(shù)的正確用法及其注意事項(xiàng)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

簡單總結(jié):

  • 與類和實(shí)例無綁定關(guān)系的function都屬于函數(shù)(function);
  • 與類和實(shí)例有綁定關(guān)系的function都屬于方法(method)。

首先摒棄錯(cuò)誤認(rèn)知:并不是類中的調(diào)用都叫方法

函數(shù)(FunctionType)

函數(shù)是封裝了一些獨(dú)立的功能,可以直接調(diào)用,能將一些數(shù)據(jù)(參數(shù))傳遞進(jìn)去進(jìn)行處理,然后返回一些數(shù)據(jù)(返回值),也可以沒有返回值??梢灾苯釉谀K中進(jìn)行定義使用。 所有傳遞給函數(shù)的數(shù)據(jù)都是顯式傳遞的。

方法(MethodType)

方法和函數(shù)類似,同樣封裝了獨(dú)立的功能,但是方法是只能依靠類或者對象來調(diào)用的,表示針對性的操作。

方法中的數(shù)據(jù)self和cls是隱式傳遞的,即方法的調(diào)用者;

方法可以操作類內(nèi)部的數(shù)據(jù)

簡單的說,函數(shù)在python中獨(dú)立存在,可直接使用的,而方法是必須被別人調(diào)用才能實(shí)現(xiàn)的。
靜態(tài)方法除外(與類和對象均無關(guān),通過類名和對象名均可被調(diào)用,屬函數(shù))

在模塊中實(shí)現(xiàn)的函數(shù)只要導(dǎo)入這個(gè)模塊的這個(gè)函數(shù)既可以任意使用了,但是在類中聲明的必須導(dǎo)入這個(gè)類之后然后再通過創(chuàng)建實(shí)例或者類名來調(diào)用??梢哉f直接在模塊中聲明的是更普遍廣泛性的函數(shù),而在類中聲明的方法一般是專屬于一類事物特有的

from types import MethodType,FunctionType
class Foo(object):
     def __init__(self):
         self.name="haiyan"
     def func(self):
         print(self.name)
obj = Foo()
print(isinstance(obj.func,FunctionType))  #False
print(isinstance(obj.func,MethodType))   #True   #說明這是一個(gè)方法
 
print(isinstance(Foo.func,FunctionType))  #True   #說明這是一個(gè)函數(shù)。
print(isinstance(Foo.func,MethodType))  #False

是的!例子中很明確,類對象調(diào)用func是方法,類調(diào)用func是函數(shù),并且是自己傳遞參數(shù)123!

注意,這只是在 python3 中才有的區(qū)分,python2 中全部稱為方法。

最大的區(qū)別是參數(shù)的傳遞參數(shù),方法是自動傳參self,函數(shù)是主動傳參

那么以后我們就可以直接看參數(shù)是如何傳遞的來判斷,

如果還不確定可以打印類型看看

from types import FunctionType,MethodType
print(isinstance(obj.func,MethodType))    ---># True
print(isinstance(Foo.func,FunctionType))  ---># True  

表面區(qū)別:

區(qū)別一所處的位置:函數(shù)是直接寫文件中而不是class中,方法是只能寫在class中。

區(qū)別二定義的方式:

1.函數(shù)定義的方式 def關(guān)鍵字 然后接函數(shù)名 再是括號 括號里面寫形參也可以省略不寫形參

def functionName():
    """這里是函數(shù)的注釋"""
    print("這一塊寫函數(shù)的內(nèi)容"

2.方法定義的方式 首先方法是定義在類中的其他他大體和函數(shù)定義差不多,這里需要注意的一點(diǎn)就是方法必須帶一個(gè)默認(rèn)參數(shù)(相當(dāng)于this),靜態(tài)方法除外

class className(super):
    
    def methodName(self):
        """這里是方法的注釋
        self相當(dāng)于this;
        """
        print("這里是方法的內(nèi)容")

區(qū)別三調(diào)用的方式:

1.函數(shù)的調(diào)用:函數(shù)的調(diào)用是直接寫 函數(shù)名(函數(shù)參數(shù)1,函數(shù)參數(shù)2,......)

def functionName():
    print("這是一個(gè)函數(shù)")
 
#調(diào)用
functionName()

2.方法的調(diào)用:方法是通過對象點(diǎn)方法調(diào)用的(這里是指對象方法)

class className:
    
    def method(self):
        print("這是一個(gè)方法")
#Python學(xué)習(xí)交流群:531509025 
#調(diào)用---------------------
#實(shí)例化對象
c=className()
 
c.method()

python類的實(shí)例方法、靜態(tài)方法和類方法區(qū)別及其應(yīng)用場景

一、先看語法,python 類語法中有三種方法,實(shí)例方法,靜態(tài)方法,類方法。

ps.python中self,cls的區(qū)別

普通實(shí)例方法,第一個(gè)參數(shù)需要是self,它表示一個(gè)具體的實(shí)例本身。
如果用了staticmethod,那么就可以無視這個(gè)self,而將這個(gè)方法當(dāng)成一個(gè)普通的函數(shù)使用。
而對于classmethod,它的第一個(gè)參數(shù)不是self,是cls,它表示這個(gè)類本身。

class Foo(object):
    """類三種方法語法形式"""
 
    def instance_method(self):
        print("是類{}的實(shí)例方法,只能被實(shí)例對象調(diào)用".format(Foo))
 
    @staticmethod
    def static_method():
        print("是靜態(tài)方法")
 
    @classmethod
    def class_method(cls):
        print("是類方法")
 
foo = Foo()
foo.instance_method()
foo.static_method()
foo.class_method()
print('----------------')
Foo.static_method()
Foo.class_method()

運(yùn)行結(jié)果如下

是類<class '__main__.Foo'>的實(shí)例方法,只能被實(shí)例對象調(diào)用
是靜態(tài)方法
是類方法
----------------
是靜態(tài)方法
是類方法

說明:

實(shí)例方法只能被實(shí)例對象調(diào)用,靜態(tài)方法(由@staticmethod裝飾的方法)、類方法(由@classmethod裝飾的方法),可以被類或類的實(shí)例對象調(diào)用。

  • 實(shí)例方法,第一個(gè)參數(shù)必須要默認(rèn)傳實(shí)例對象,一般習(xí)慣用self。
    靜態(tài)方法,參數(shù)沒有要求。

  • 類方法,第一個(gè)參數(shù)必須要默認(rèn)傳類,一般習(xí)慣用cls。文章來源地址http://www.zghlxwxcb.cn/news/detail-807439.html

到了這里,關(guān)于Python函數(shù)的正確用法及其注意事項(xiàng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Antd中的getFieldDecorator用法和注意事項(xiàng)

    Antd中的getFieldDecorator用法和注意事項(xiàng)

    getFieldDecorator是form表單的一個(gè)方法,接收兩個(gè)參數(shù) 第一個(gè)參數(shù)是表單對應(yīng)的字段 第二個(gè)是驗(yàn)證規(guī)則 該方法本身返回一個(gè)方法,需要將獲取值的標(biāo)簽包裹進(jìn)去 getFieldDecorator ( “自定義控件名”,{ 表單規(guī)則 } ) (“取值標(biāo)簽”?) ? 效果: 第二個(gè)括號中的組件用一個(gè)氣泡組件Po

    2024年02月16日
    瀏覽(20)
  • MATLAB 并行計(jì)算 parfor 用法及注意事項(xiàng)

    MATLAB 并行計(jì)算 parfor 用法及注意事項(xiàng)

    最近在用MATLAB做工作空間計(jì)算,for循環(huán)次數(shù)較多,運(yùn)算非常慢,同學(xué)說可以使用并行計(jì)算,于是嘗試,大開眼界。 參考文章:Matlab并行計(jì)算(新手)_a99h的博客-CSDN博客 在較新版本的matlab中,不需要使用p=parpool(n)來手動開啟線程池,操作變得更簡單。 (注:MATLAB 2023a已經(jīng)不需

    2024年02月10日
    瀏覽(21)
  • LocalDateTime、LocalDate、Date、String相互轉(zhuǎn)化大全及其注意事項(xiàng)

    LocalDateTime、LocalDate、Date、String相互轉(zhuǎn)化大全及其注意事項(xiàng)

    大家在開發(fā)過程中必不可少的和日期打交道,對接別的系統(tǒng)時(shí),時(shí)間日期格式不一致,每次都要轉(zhuǎn)化! 每次寫完就忘記了,小編專門來整理一篇來詳細(xì)說一下他們四個(gè)的轉(zhuǎn)換的方法,方便后面使用!! 這里先說一下,為什么日期有 Date 了,還在 JDK8 中推出了 LocalDateTime、Lo

    2024年02月08日
    瀏覽(21)
  • 什么是hive的高級分組聚合,它的用法和注意事項(xiàng)以及性能分析

    hive的高級分組聚合是指在聚合時(shí)使用GROUPING SETS、CUBE和ROLLUP的分組聚合。 高級分組聚合在很多數(shù)據(jù)庫類SQL中都有出現(xiàn),并非hive獨(dú)有,這里只說明hive中的情況。 使用高級分組聚合不僅可以簡化SQL語句,而且通常情況下會提升SQL語句的性能。 示例: Grouping sets的子句允許在一個(gè)

    2024年02月11日
    瀏覽(19)
  • 完全指南:mv命令用法、示例和注意事項(xiàng) | Linux文件移動與重命名

    什么是 mv 命令? mv 命令是Linux和Unix系統(tǒng)中的一個(gè)常用命令,用于移動文件或重命名文件。它可以將文件從一個(gè)位置移動到另一個(gè)位置,也可以修改文件的名稱。 mv 命令的作用和功能是什么? mv 命令主要有兩個(gè)作用:移動文件和重命名文件。通過使用 mv 命令,您可以將文件

    2024年02月05日
    瀏覽(88)
  • Java對文件的寫入和讀取 (File類詳解以及Input,OutputStream用法,注意事項(xiàng))

    Java對文件的寫入和讀取 (File類詳解以及Input,OutputStream用法,注意事項(xiàng))

    Java中,操作文件的類有很多, 核心的部分是File類,InputStream,OutputStream類 我們先來看看 File 類中的常見屬性、構(gòu)造方法和方法 屬性 修飾符及類型 屬性 說明 static String pathSeparator 依賴于系統(tǒng)的路徑分隔符,String 類型的表示 static char pathSeparator 依賴于系統(tǒng)的路徑分隔符,char 類型的

    2024年02月09日
    瀏覽(20)
  • STM32使用printf函數(shù)的步驟和注意事項(xiàng)

    STM32使用printf函數(shù)的步驟和注意事項(xiàng)

    1,在KEIL中勾選 Use MicroLIB . 即使用微庫. 2, 在代碼中添加 如下代碼 (目的是為了調(diào)用stdio庫中的print 函數(shù)) 3,在uart.c 填加如下代碼 (目的是為了重定向 stdio庫中的print 函數(shù) ) 1, 在代碼中添加 如下代碼 (目的是為了調(diào)用stdio庫中的print 函數(shù)) 2, 關(guān)閉半主機(jī)模式,并重定向printf 想要明白

    2023年04月08日
    瀏覽(24)
  • Go語言中的init函數(shù): 特點(diǎn)、用途和注意事項(xiàng)

    在Go語言中, init() 函數(shù)是一種特殊的函數(shù),用于在程序啟動時(shí)自動執(zhí)行一次。它的存在為我們提供了一種機(jī)制,可以在程序啟動時(shí)進(jìn)行一些必要的初始化操作,為程序的正常運(yùn)行做好準(zhǔn)備。 在這篇文章中,我們將詳細(xì)探討 init() 函數(shù)的特點(diǎn)、用途和注意事項(xiàng),希望能幫助你更

    2024年02月08日
    瀏覽(39)
  • @NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor的區(qū)別和@Data和@Builder的用法以及在idea中使用的注意事項(xiàng)

    @NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor的區(qū)別和@Data和@Builder的用法以及在idea中使用的注意事項(xiàng)

    1、區(qū)別 ????????@NoArgsConstructor:注解在類上,為類提供一個(gè)無參的構(gòu)造方法。 ????????@AllArgsConstructor:注解在類上,為類提供一個(gè)全參的構(gòu)造方法 ????????@RequiredArgsConstructor:注解在類上,會生成構(gòu)造方法(可能帶參數(shù)也可能不帶參數(shù))。注意:@RequiredArgsConstr

    2024年04月26日
    瀏覽(24)
  • android studio 使用MQTT協(xié)議連接onenet 注意事項(xiàng)和相關(guān)函數(shù)

    android studio 使用MQTT協(xié)議連接onenet 注意事項(xiàng)和相關(guān)函數(shù)

    一、注意事項(xiàng): 1.添加依賴: 2.在注冊表允許打開網(wǎng)絡(luò) 3.在application? ? ?/application之間添加用于支持 MQTT(Message Queuing Telemetry Transport)通信協(xié)議的 Eclipse Paho Android 服務(wù)。 4.打開項(xiàng)目中的 gradle.properties?文件,并確保以下屬性設(shè)置為true------更新所有的支持庫到AndroidX中。 二、

    2024年04月26日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包