Python函數的說明與運用

Python函數的說明與運用


函數定義:

  函數是一組語句的集合,用以實現某一特定功能。函數可簡化腳本,函數包括內置函數和自定義函數


自定義函數框架:

  在python中使用def可以聲明一個函數,完整的函數是由函數名,參數,函數體,返回值。

  聲明函數的形式如下:

  def 函數名 (參數)
    函數體
    return 返回值


  注意:參數和返回值不是必須的,當沒有設置返回值的時候,該函數的返回值默認是null


函數調用

   在python中自定義函數與內置函數調用方法相同,只要使用函數名制定要調用的函數,然後再用函數後加相應的參數即可,如果有多個參數,則不同的參數要以“,”分開。函數調用必須在申明一個函數之後才能調用。


函數中的參數分類

   默認參數

    在python中,可以在聲明函數時,預先爲參數設置一個默認值。當調用參數時,如果某個參數,具有默認值,則可以不向函數傳遞該參數

def  fun(x=5)
    return x**3
print (fun(2))
8
print (fun())
125

    指定參數

    如果一個函數具有多個參數,並且這些參數都具有默認值,在調用函數的時候,可能第一個參數傳遞值可以設置

def fun(x=1,y=2,z=3):
  return(x+y-z)**3
print (fun(2))
1
print (fun(3))
8
print (fun(3,3))
27

    動態參數

           *默認輸入的參數,全部放置在元組中

def fun(*arg:)
  print (args)
fun (11,22)
  (11,22)

           **默認輸入的參數,全部放置在字典中

def fun(**args):
  print(args)
fun(k1=11,k2=22)
{k1:11,k2:22}

           在同時有一個*和兩個*的時候,定義默認參數時一個*一定要在前面

def fun(*args,**qwargs):
  print(args)
  print(qwargs)
fun(22,33,k1=22,k2=33)
(22,33)
{'k2':33,'k1':22}

          在python中格式化輸出%s與%d,函數中也有格式話輸出format()

s="i am {0},age{1}".format("alex",18)
s="i am {0},age{1}".format(*["alex",18])
s="i am {name},age{age}".format(name="alex",age=18)
s="i am {0},age{1}".format(**dic)
s="i am alex,age 18" #輸出結果

變量的作用域

  在python腳本中,不同的函數可以具有相同的參數名,在函數中已經聲明過變量名,在函數外還可以繼續使用,而在腳本運行過程中,其值並不相互影響

  在python中,作用域可以分爲內置作用域和全局作用域和局部作用域,內置作用域是python預先定義的,全局作用域是所編寫的整個腳本,局部作用域是某個函數內部範圍

  如果函數中使用函數外的變量,則可以在變量名前使用global關鍵字

def fun(x):   #聲明一個函數
  a=[1]     #定義一個名爲a的列表
  a.append(x)
  print(a)
a=[2,3,4]    #在函數外定義一個名爲a的列表
fun(2)
[1,2]
a          #輸出a的值

    

def fun(x):    #聲明一個函數
  global a
  return a+x
a=5
fun(3)
8
a=2
fun(3)
5

默認定義的全局變量全部大寫,局部變量全部小寫


三元計算:

if 1==1:

  name="john"

else:

  name="hehe"


name="john" if 1==1 else "hehe"

   最簡單的函數:用lambda表達式

   用lambda適用於定義一個小型的函數,在函數中僅能包含單一的參數表達式,而不能包含其他的語句。在lambda中也可以調用其他的函數。

def fun():
  print ('lambda')
f= lamdba:fun()
f()
lambda
def f1(a1):
  return a1+100
f2=lambda a1:a1+100   #lambda參數:函數體
ret=f1(10)
print(ret)


內置函數:

取絕對值

def abs()
  f=abs(-1)
  f=1

判斷真假的函數

def all()  #當all的參數裏全部爲真時,all()爲真,當all裏有一個參數爲假時,即爲假
  f= [11,22]
   all(f)爲turn
   f=[11,0]
   all(f)爲false
def any()
   f=[11,0]
   any(f)爲turn


按照編碼,轉換字節類型

def byte()
  n=bytes(s,encoding="utf8")
  n=bytes(s,encoding="gbk")


判斷對象能不能被調用 如果可以返回Turn

def callable()


基於ascii碼數字與字母之間的轉換

def chr()  #數字轉換字母
def ord()  #字母轉換數字

隨機產生數字 random模塊

import random
li=[]
for i in range(6):
    r=random.randrange(1,5)
    if r==2 or r==4
        num=random.randrange(0,10)
        li.append(str(num))
    else:
        temp=random.randrange(65,91)
        c=chr(temp)
        li.append(c)
result = "".join(li)
print(result)
def compile() 編譯代碼
def eval() 接收字符串 將把字符串變成一個表達式執行
  S=8*8
  ret=eval(s)
  print(ret)
  64
def exec() 執行代碼
def delattr
  getattr
def dict() 字典
def dir() 快速獲取對象類提供功能
def divmod(100,10)返回元組 元組的元素爲商和元組
def isinstance()判斷元素是否屬於實例或類
  a="li"
  r=isinstance(a,str)
  print(r)
  Turn
def filter() #循環第二個參數,讓每個循環元素執行函數,如果函數返回值Turn,表示
   filter (函數,可迭代的類)
   def f2(a):
       if a>22:
       return True    函數也可以使用lambda表達式寫入 比如F2=lambda a: a>33.帶入
    li=[11,22,33,44,55]   filter(lambda a: a>33,li)
    ret=filter(f2,li)
    print(list(li))
def map() #循環第二個參數 讓每個元素循環執行 函數fa,返回結果
    map(函數,可迭代)
    li=[11,22,33,44,55]
    def fa(a)
        return a+100
     result=map(f2,li)
     print(result)
def float() 將字符串修改成格式化
def format() 字符串格式化 
def frozenset() 不可變集合
def globals() 獲取所有的全局變量
def local() 獲取所有的局部變量
def hash() 生成哈希值
def id() 查看內存地址
def iter() 創建迭代器
def len() 查看長度
def max() 求最大值
def min() 求最小值
def sum() 求和
def paw() 平方
  t=paw(2,10)
  print(t)
  1024
def reversed() 使可迭代參數翻轉
def round(1,8) 使數字四捨五入
  2
def slice() 切片的功能

發郵件

import smtplib
from email.mime.text import MIMEText
from email.utils  import formataddr

msg = MIMEText('郵件內容','plain','utf-8')
msg['From'] = formataddr(["發件",'[email protected]'])
msg['To'] = formataddr(["收件",'[email protected]'])
msg['Subject'] = "主題"

server = smtplib.SMTP("smtp.qq.com".25)
server.login("[email protected]","郵箱密碼")
server.sendmail('[email protected]',['[email protected]',],msg.as_string())
server.quit()


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章