亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
  • https://img1.sycdn.imooc.com/66dafaa20001aec410690656.jpg

    Teacher 繼承 Student 時,__init__()括號中需要寫被繼承類的全部參數, super(Teacher, self).__init__(name, gender)報錯是因為缺少了Student的score參數; t = Teacher('Alice', 'Female', 'English') Teacher繼承Student的三個參數后又定義了course參數,共4個參數,這個地方少了一個參數


    查看全部
    0 采集 收起 來源:Python判斷類型

    2024-09-06

  • 有參數的decorator

    在外面套一層專門接收參數的函數

    例:

    請給 @performace 增加一個參數,允許傳入's'

    import?time
    from?functools?import?reduce
    
    def?performance(prefix):
    ????def?performance_decorator(f):
    ????????def?fn(*args,?**kwargs):
    ????????????t1?=?time.time()
    ????????????f(*args,?**kwargs)
    ????????????t2?=?time.time()
    ????????????print('函數f運行時間是{}{}'.format(t2?-?t1,prefix))
    ????????return?fn
    ????return?performance_decorator
    
    @performance('s')
    def?f(list_):
    ????return?reduce(lambda?x,y:?x*y,?list_)
    
    f(list(range(1,10000)))

    解釋:

    def performance(參數):

    ????def performance_decorator(函數f):

    ????????...

    ????return performance_decorator

    performance_decorator = performance(參數)

    新函數 = performance_decorator(原函數)

    查看全部
  • 裝飾器的作用:

    給原函數裝飾裝飾變成新函數

    裝飾器的語法:

    @+裝飾器函數名


    例:

    編寫一個decorator計算函數的運行時間

    import?time
    from?functools?import?reduce
    
    def?performance(f):
    ????def?fn(*args,?**kwargs):
    ????????t1?=?time.time()
    ????????f(*args,?**kwargs)???#接收函數用*args,**kwargs;在函數中用args,kwargs
    ????????t2?=?time.time()
    ????????print('函數f運行時間是{}s'.format(t2?-?t1))
    ????return?fn
    
    @performance
    def?f(list_):
    ????return?reduce(lambda?x,y:?x*y,?list_)
    
    f(list(range(1,100000)))
    ==>函數f運行時間是2.1856231689453125s

    解釋:

    1. 將函數f作為參數傳給函數performance

    2. 函數performance接收原函數f

    3. 在函數performance中定義新函數fn,新函數的參數用來接收原函數的參數,一般設為*args,**kwargs可接收任何形式參數

    4. 裝飾原函數

    5. 返回新函數fn

    查看全部
  • def?calc_sum(list_):
    ????def?lazy_sum():
    ????????return?sum(list_)
    ????return?lazy_sum
    f?=?calc_sum([1,?2,?3,?4])
    f()
    ==>10

    閉包:

    內層函數引用外層函數的變量(參數也算是變量),最后外層函數返回內層函數

    那么這個內層函數就是一個閉包(類似打包返回)


    錯誤寫法:

    #?希望一次返回3個函數,分別計算1x1,2x2,3x3:
    def?count():
    ????fs?=?[]
    ????for?i?in?range(1,?4):
    ????????def?f():
    ?????????????return?i*i
    ????????fs.append(f)
    ????return?fs
    
    f1,?f2,?f3?=?count()?#內層函數只被定義還沒運行,此時外層函數運行完畢i=3
    f1()==>9???#運行內層函數
    f2()==>9
    f3()==>9


    正確寫法:

    def?count():
    ????fs=[]
    ????for?i?in?range(1,4):
    ????????def?g(j=i):???????#為內層函數設置形參默認值
    ????????????return?j*j
    ????????fs.append(g)
    ????return?fs
    
    f1,f2,f3=count()
    print(f1(),f2(),f3())

    在Python中,函數形參默認值是指在定義函數時為形參指定的默認值,在調用函數時,如果沒有為該形參提供實際的參數值,函數會使用默認值

    查看全部
    0 采集 收起 來源:Python的閉包

    2024-09-03

  • Python在函數內部定義子函數,并把子函數返回

    def?f():
    ????def?g():
    ????????return?...
    ????return?g
    x?=?f()
    x()

    函數名g就是指向函數g的變量

    不加小括號就只是一個變量,加上小括號才能調用函數

    查看全部
    0 采集 收起 來源:Python返回函數

    2024-09-03

  • 匿名函數

    lambda 參數 : 表達式

    可以有多個參數,但只能有一個表達式,返回值就是表達式的結果


    例:

    map(lambda?x:x*x,[1,2,3,4])
    reduce(lambda?x,y:x*y,[1,2,3,4])
    sorted(['bob',?'about',?'Zoo',?'Credit'],key=lambda?x:x.lower())
    查看全部
  • sorted(list, (key=函數對象f, reverse=True)) 默認從小到大排序

    函數f的作用:

    接受待排序列表的元素作為參數傳入函數f,并返回真正需要排序的字段

    例1:

    (姓名,成績)按成績進行排序

    def?f(item):
    ????return?item[1]
    print(sorted([('Alice',?72),?('Candy',?90),?('Bob',?62)],key=f))
    ==>[('Bob',?62),?('Alice',?72),?('Candy',?90)]

    例2:

    對字符串忽略大小寫進行排序

    def?f(item):
    ????return?item.lower()
    print(sorted(['bob',?'about',?'Zoo',?'Credit'],key=f))
    ==>['about',?'bob',?'Credit',?'Zoo']
    查看全部
  • filter(函數f, list)將函數f作用到list的每個元素上,對元素進行判斷,篩選出為True的元素(以迭代器形式)

    例1:

    利用filter()函數,刪除 None 或者空字符串

    def?is_not_empty(s):
    ????return?s?and?s.strip()
    
    for?item?in?filter(is_not_empty,?['test',?None,?'',?'str',?'??',?'END']):
    ????print(item)

    str.strip()刪除字符串str中的空白字符

    例2:

    利用filter()過濾出1~100中平方根是整數的數

    import?math
    ????
    def?sqrt_is_int(n):
    ????#?解題思路:如果將一個數的平方根的整數部分再平方仍然等于這個數,則他的平方根一定是整數
    ????return?int(math.sqrt(n))*int(math.sqrt(n))?==?n
    ????
    for?item?in?filter(sqrt_is_int,list(range(1,101))):
    ????print(item)
    ????
    ????
    #?math.sqrt()的結果是float
    #?float*float結果可能是int
    查看全部
  • reduce(函數f, list)對list的元素順序累(積/加...)

    函數f必須接收兩個參數

    例:

    Python內置了求和函數sum(),但沒有求積的函數,請利用recude()來求積

    from?functools?import?reduce
    def?f(x,y):
    ????return?x*y
    
    print(reduce(f,[1,3,5,7,9]))?????
    ==>
    f(1,3)??f(3,5)??f(15,7)??f(105,9)
    945
    查看全部
  • map(函數f, list) 把函數f作用在list的每一個元素上

    例:

    請利用map()函數,把一個list(包含若干不規范的英文名字)變成一個包含規范英文名字(首字母大寫,后續字母小寫)的list:

    輸入:['alice', 'BOB', 'CanDY']
    輸出:['Alice', 'Bob', 'Candy']

    def?f(s):
    ????return?s[0].upper()?+?s[1:].lower()
    ????
    for?item?in?map(f,['alice',?'BOB',?'CanDY']):
    ????print(item)
    ==>
    Alice
    Bob
    Candy

    str.lower()將字符串str變成小寫

    str.upper()將字符串str變成大寫

    注意:

    1. 字符串切片會得到一個子字符串

    2. 字符串的不可變性,不能在原字符串上修改某個索引位置

    查看全部
  • 請從頁面返回的內容中,過濾出鏈接含有www的內容。

    import?requests
    from?bs4?import?BeautifulSoup
    
    url?=?"http://www.xianlaiwan.cn"
    response?=?requests.get(url)
    
    if?response.status_code?==?200:
    ????#?使用BeautifulSoup解析頁面內容
    ????soup?=?BeautifulSoup(response.text,?'html.parser')?#'html.parser'是HTML解析器
    
    ????#?找到所有的鏈接
    ????links?=?soup.find_all('a')?????????#使用find_all()來查找特定標簽find_all()
    
    ????#?篩選出包含'www'的鏈接
    ????www_links?=?[link['href']?for?link?in?links?if?link.get('href')!=None?and?'www'?in?link['href']]???????#以字典形式傳入屬性得到屬性值
    
    ????for?link?in?www_links:
    ????????print(link)
    else:
    ????print("Failed?to?retrieve?the?webpage")
    查看全部
    0 采集 收起 來源:HTTP響應的內容

    2024-09-02

  • 網絡通信

    server.py

    import?socket
    
    server?=?socket.socket()?#創建server
    
    server.bind(('127.0.0.1',8999))?#綁定IP和端口?????127.0.0.1是本機回環IP
    
    server.listen(5)??#監聽端口(端口的最大連接數量)
    
    s?,?client_info?=?server.accept()??#接受連接,返回一個新的socket代理這個連接,和客戶端的信息(IP,端口)
    
    data?=?s.recv(1024)???#接收數據(最大字節數)
    
    while?1:
    ????data_append?=?s.recv(1024)
    ????if?str(data_append,'utf-8')?==?'end':
    ????????print(str(data,'utf-8'))
    ????????data?=?b''
    ????else:
    ????????data?+=?data_append

    client.py

    import?socket
    
    client?=?socket.socket()?#創建client
    
    client.connect(('127.0.0.1',8999))?#連接server
    
    while?1:
    ????data?=?input('echo>>>')
    ????client.send(bytes(data,'utf-8'))?#發送bytes
    查看全部
  • 常用模式怎么記?

    前操作,后文件格式,默認文本格式

    r,rb

    w,wb

    a,ab

    查看全部
  • 一般使用close()關閉文件,但如果在close()之前,程序異常退出了,那么文件就得不到正確的關閉,就會造成文件損壞,文件內容丟失的問題

    with關鍵字:

    會確保不管在使用過程中是否發生異常,都會執行必要的“清理”的操作,釋放資源,比如文件使用后自動關閉等等。

    查看全部
  • seek(index)移動文件中的游標位置

    index:0 文件首部? ?index:2 文件尾部


    注意:

    往文件中寫完內容后,游標會在文件尾部,如果之后想讀取文件內容,需要把游標移動到文件首部,否則讀取不到任何內容

    with?open('requirements.txt','a')?as?f:
    ????f.write('aaa\n')
    ????print(f.readlines())
    ==>io.UnsupportedOperation:?not?readable
    查看全部

舉報

0/150
提交
取消
課程須知
本課程是Python入門的后續課程 1、掌握Python編程的基礎知識 2、掌握Python函數的編寫 3、對面向對象編程有所了解更佳
老師告訴你能學到什么?
1、什么是函數式編程 2、Python的函數式編程特點 3、Python的模塊 4、Python面向對象編程 5、Python強大的定制類

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!