python--函數

來源:互聯網
上載者:User

標籤:

函數的定義

def sendmail():      #####定義函數,sendmail 是由自己定義的
n = 100
n +=1
print(n)

sendmail() ######執行函數 結果為 101
f = sendmail ##將函數名賦值給f
f() ######執行函數 結果為101

下面是一個正式的函數線上能發送成功,知識生產環境需要考慮到網路發送郵件,受到網路、第三方伺服器(網易的郵箱)的限制比較多
原理實現:
首先定義一個值 ret
執行try 裡面的內容,成功的話,下面內容就不執行,從而返回的ret值是開始賦的True
執行try 裡面的內容,不成功的話,就執行下面的內容,從而返回的ret值是開始賦的True
‘‘‘
‘‘‘
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
def sendmail():
ret = True
try:
msg = MIMEText(‘郵件內容--這是我用寫程式的方式發送的郵件‘,‘plain‘,‘utf-8‘)
msg[‘From‘] = formataddr([‘wangshiqing‘,‘[email protected]‘])
#msg[‘To‘] = formataddr([‘wangqq‘,‘[email protected]‘])
msg[‘To‘] = formataddr([‘jingjing‘,‘[email protected]‘])
msg[‘Subject‘] = "主題--python程式測試"

server = smtplib.SMTP("smtp.126.com",25)
server.login("[email protected]","[email protected]_4")
#server.sendmail(‘[email protected]‘,[‘[email protected]‘,],msg.as_string())
server.sendmail(‘[email protected]‘,[‘[email protected]‘,],msg.as_string())
server.quit()
except Exception:
ret = False
return ret

ret = sendmail()
if ret:
print("發送成功")
else:
print("發送失敗")


# msg[‘To‘] = formataddr([‘jingjing‘,‘[email protected]‘])

# server.sendmail(‘[email protected]‘,[‘[email protected]‘,],msg.as_string())
‘‘‘
‘‘‘
def show():
print(‘a‘)
if 1 ==2:
return [11,22,33]
print(‘b‘)

ret = show()
print(ret)
‘‘‘
‘‘‘
結果是
a
b
None
重點是沒有執行return 語句,預設會返回None
‘‘‘
‘‘‘
def show():
print(‘a‘)
if 1 == 1:
return [11,22,33]
print(‘b‘)

ret = show()
print(ret)
‘‘‘
‘‘‘
結果是
a
[11, 22, 33]
解釋是:執行了if語句後,執行return 得到[11,22,33] 程式也中斷了
‘‘‘
‘‘‘
#######程式的debug模式###
在語句的左邊的灰色的位置用滑鼠點,會出現紅色的點,這就是程式的斷點
在正常執行的按鈕右邊有一個debug模式的運行鍵。執行後,程式會正常進行,
在正常執行的反饋介面中,有一個按鈕,按一下,程式會往下走一步,就會看到程式的運行調試過程。
‘‘‘

‘‘‘
######形式參數
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
def sendmail(user):
ret = True
try:
msg = MIMEText(‘郵件內容--這是我用寫程式的方式發送的郵件‘,‘plain‘,‘utf-8‘)
msg[‘From‘] = formataddr([‘wangshiqing‘,‘[email protected]‘])
msg[‘To‘] = formataddr([‘wangqq‘,‘[email protected]‘])
msg[‘Subject‘] = "主題--python程式測試"

server = smtplib.SMTP("smtp.126.com",25)
server.login("[email protected]","[email protected]_4")
server.sendmail(‘[email protected]‘,[user,],msg.as_string())
server.quit()
except Exception:
ret = False
return ret

ret = sendmail(‘[email protected]‘)
if ret:
print("發送成功")
else:
print("發送失敗")
‘‘‘
‘‘‘
#####一個參數
def show(a1):
print(a1)
ret = show(100)
print(ret) ###結果是 100
#### None
‘‘‘
‘‘‘
######二個參數
def show(a1,a2):
print(a1,a2)
ret = show(123,999)
print(ret)
###結果是
#123 999
#None
‘‘‘
‘‘‘
########預設參數
def show(a1,a2=999):
print(a1,a2)
ret = show(123)
print(ret)
###結果是
#123 999
#None
#####預設參數1:只能放在最後,2 如果賦值的話,是以新賦的值為標準
‘‘‘
‘‘‘
#####指定參數
def show(a1,a2):
print(a1,a2)
ret = show(a2=999,a1=123)
print(ret)
‘‘‘
‘‘‘
########動態參數
#def show(*args):
# print(args,type(args))
#ret = show(11,22,33,44,55)
#print(ret)

#def show(**args):
# print(args,type(args))
#ret = show(n1=‘ere‘,n2=‘sffds‘,n3=100)
#print(ret)

def show(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))

ret = show(11,22,‘sdfs‘,33,n1=‘ere‘,n2=‘sffds‘,n3=100)
print(ret)
‘‘‘
‘‘‘
(11, 22, ‘sdfs‘, 33) <class ‘tuple‘>
{‘n1‘: ‘ere‘, ‘n2‘: ‘sffds‘, ‘n3‘: 100} <class ‘dict‘>
None
1 * 傳入的參數之後,得到的是一個元組
2,** 傳入參數後,得到的是字典,也就是說,傳入的參數的形式是 ####=###
3 兩種形式混合的話,* 寫在前面 ** 寫在後面 傳入參數的時候 11,22 這種形式的也是必須寫在前面
‘‘‘

‘‘‘
def show(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))

l = [11,22,33,44]
d = {‘n1‘:‘abc‘,‘alex‘:‘ef‘}
#ret = show(l,d)
#print(ret)
ret = show(*l,**d)
print(ret)

print(show(l,d))的執行結果如下,是由於l,d 符合*args的情況,元組中可以包含列表和字典
([11, 22, 33, 44], {‘alex‘: ‘ef‘, ‘n1‘: ‘abc‘}) <class ‘tuple‘>
{} <class ‘dict‘>
None

print(show(*l,**d))的執行結果如下,是明確告訴程式,自己的需求
(11, 22, 33, 44) <class ‘tuple‘>
{‘n1‘: ‘abc‘, ‘alex‘: ‘ef‘} <class ‘dict‘>
None

‘‘‘



‘‘‘
s1 = "{0} is {1}"
#ret = s1.format(‘alex‘,‘2b‘)
#print(ret)

l = [‘alex‘,‘2b‘]
ret = s1.format(*l)
print(ret)

s1 = "{name} is {acter}"
#ret = s1.format(name = ‘alex‘,acter = ‘2b‘)
#print(ret)

d = {‘name‘:‘alex‘,‘acter‘:‘2b‘}
ret = s1.format(**d)
print(ret)
‘‘‘



‘‘‘
上面的內容實現“函數的動態參數實現字串格式化”
結果都是alex is 2b
‘‘‘

####lambda 運算式 簡單函數的表示方式
##建立了形式參數a
###有了函數內容,a+1 並把結果return
#def func(a):
# b = a +1
# return b
#ret = func(4)
#print(ret)

func = lambda a:a+1
ret = func(4)
print(ret)

########上面5行,和下面三行 表達的意思是一樣的。


#########內建函數#########
###內建函數有哪些
‘‘‘
abs() 絕對值
all() 判斷序列(列表、元組、字典)中元素是否全部為真
假的 None Null 字元串、空元組、空字典、空元組
any() 判斷只要一個元素為真,傳回值就是真的
bool(None) #判斷元素的布爾值

ascii() ascii 碼
bin() 二進位
bytearray() 轉換為位元組數組
>>> bytearray("fsdfsfsdfds",encoding=‘utf-8‘)
bytearray(b‘fsdfsfsdfds‘)

callable() 是否可執行
>>> f = lambda x: x+1
>>> callable(f)
True
>>> f(6)
7

chr() 數字轉為ascii
ord() ascii 轉為數字
一般應用情境,產生驗證碼
>>> import random
>>> random.randint(1,99)
75
>>> random.randint(1,99)
68
>>> random.randint(1,99)
37
>>> chr(78)
‘N‘

compile() 編譯
delattr() 發射
dict() 字典
dir() 所有變數所有key
divmod()
enumerate()
>>> li = [‘alex‘,‘yy‘,‘zz‘]
>>> for i in li:print(i)
...
alex
yy
zz
>>> for i,item in enumerate(li,1):print(i,item)
...
1 alex
2 yy
3 zz
###enumerate 從1 開始自增加

eval()
filter() 通過map() 函數處理得到原來列表符合要求的值的一個新列表
map() 通過map() 函數處理得到原來列表所有值的一個新列表
11:34
>>> li = [11,22,33,44]
>>> map(lambda x:x+100,li)
<map object at 0x0050B990>
>>> new_li = map(lambda x:x+100,li)
>>> for i in new_li:print(i)
...
111
122
133
144

>>> li = [11,22,33,44]
>>> def foo(a):
... if a>33:
... return True
... else:
... return False
...
>>> new_li2 = filter(foo,li)
>>> list(new_li2)
[44]


float()
format()

getattr()

frozenset() 凍結set
set()

globals() 當前全域變數
locals() 局部變數

hash()

help()
hex() 十六進位 0x 表示
oct() 八進位 0o表示

max()
min()
sum()

pow
range() 區間 17:40
>>> i = range(1,10)
>>> for a in i:print(a)
...
1
2
3
4
5
6
7
8
9


reversed()反轉
round() 四捨五入

slice() 切片
sorted() 排序
str() 字串



super()
vars() dir 所有的key

zip() ###混合,得到一個列表
>>> x = [1,2,3]
>>> y = [4,5,6]
>>> zipped = zip(x,y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]

‘‘‘


###########open 函數
#f = open("test.log",‘w‘,‘encoding=utf-8‘)
##f.write(‘abcdefg‘)
#f.close()
#print(f)


f = open(‘test.log‘,‘w‘)
f.write(‘abcdefg‘)
f.close()
print(f)

python--函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.