-
map()是 Python 內置的高階函數(shù),它接收一個函數(shù) f?和一個 list,并通過把函數(shù) f依次作用在list的每個元素上,map()函數(shù)會返回一個迭代器,可以依次迭代得到原來list的元素被函數(shù)f處理后的結果。
查看全部 -
def calc_prod(list_): ? ?
def prod():
? ? ? ?result = 1
? ? ? ?for x in list_:
? ? ? ? ? ?result *= x ? ? ? ?return result ??
?return prod
這個代碼的思路是使用了一個閉包,也就是一個定義在函數(shù)內部的函數(shù),它可以訪問外部函數(shù)的變量。這樣,當我們調用calc_prod(list_)時,它會返回一個prod函數(shù),這個函數(shù)保存了list_的值,然后當我們調用prod()時,它會遍歷list_中的元素并計算它們的乘積。
這個代碼也可以用reduce函數(shù)來簡化,reduce函數(shù)可以對一個序列應用一個二元操作符,并累積結果。例如,我們可以用operator模塊中的mul函數(shù)來表示乘法操作:
from operator import mul # from functools?
import reduce # python3? compatibility
def calc_prod(list_): ? ?
return lambda:?
reduce(mul, list_, 1)
這里我們用lambda表達式來定義一個匿名函數(shù),它返回reduce(mul, list_, 1)的結果。reduce(mul, list_, 1)的意思是從1開始,依次用mul函數(shù)把list_中的元素相乘,并返回最終結果。
查看全部 -
文件對象還提供seek()方法,可以移動文件的游標位置,它接受一個參數(shù),表示文件的位置,0:文件首部,1:當前位置,2:文件尾部,通過seek()可以把文件游標移動到文件首部但不刪除文件的內容。
查看全部 -
文件對象提供read()方法,可以讀取文件中的若干個字符,它提供一個參數(shù)size,可以指定讀取字符的數(shù)量。
s = f.read(5)
print(s) # ==> Hello當read()之后,訪問文件的游標就會移動到第六個字符前面,此時,繼續(xù)read,將得到Hello后面的結果。
s = f.read(6)
print(s) # ==> ' World'查看全部 -
注意,為了安全操作文件,文件使用完畢后,需要使用close()函數(shù)正確關閉。
查看全部 -
__call__?方法定義了一個可以將類實例當作函數(shù)調用的功能。它接受一個參數(shù) "num",表示要生成的斐波那契數(shù)列的長度。
在?__call__?方法內部,定義了兩個變量 "a" 和 "b",初始值分別為 0 和 1。使用一個循環(huán)迭代 "num" 次。
在每次迭代中,將 "a" 的值添加到 "res" 列表中。然后,通過交換 "a" 和 "b" 的值更新它們的值,即將 "b" 賦值給 "a",將 "a + b" 的和賦值給 "b"。
查看全部 -
python的函數(shù)式編程
1、不是純函數(shù)式編程:允許有變量
2、支持高階函數(shù):函數(shù)可以作為變量
3、支持閉包:可以返回函數(shù)
4、支持匿名函數(shù)
查看全部 -
import math
def is_sqrt_int(n):
? ? return math.sqrt(n) == int(math.sqrt(n))
result = list(filter(is_sqrt_int, range(1, 101)))
print(result)
查看全部 -
這是調用了r1這個實例的__add__方法,self是指實例本身也就是r1,而r這個參數(shù)就是指代r2,下文兩個語句是等價的
print(r1+r2)
print(r1.__add__(r2))
? ?
查看全部 -
服務端:
import socket
server = socket.socket() # 1. 新建socket
server.bind(('127.0.0.1', 8999)) # 2. 綁定IP和端口(其中127.0.0.1為本機回環(huán)IP)
server.listen(5) # 3. 監(jiān)聽連接
s, addr = server.accept() # 4. 接受連接
print('connect addr:{}'.format(addr))
while True:
? ?content =s.recv(1024)
? ?if len(content) == 0:
? ? ? ?break
? ?s.send(content)
? ?print(str(content, encoding='utf-8')) # 接受來自客戶端的消息,并打印出來
s.close()客戶端:
import socket
client = socket.socket() # 1. 新建socket
client.connect(('127.0.0.1', 8999)) # 2. 連接服務端(注意,IP和端口要和服務端一致)
while True:
? ?content = input('>>> ')
? ?client.send(bytes(content, 'utf-8')) # 發(fā)送內容,注意發(fā)送的是字節(jié)字符串。
? ?content = client.recv(1024)
? ?print(str(content, encoding='utf-8'))
client.close()查看全部 -
你好,這是必應。??
sys.path是Python的一個列表,用于存儲模塊的搜索路徑。當你使用import語句導入模塊時,Python會在sys.path中列出的路徑中查找相應的模塊。要使用sys.path增加路徑,你可以使用sys.path.append()函數(shù),將新的路徑添加到列表的末尾。
例如,如果你想要導入當前目錄上級目錄的包,你可以在你的代碼中寫:
import sys
sys.path.append('../') # 添加上級目錄的路徑import package # 導入上級目錄的包復制
這樣,Python就可以在上級目錄中找到package這個包,并導入它。需要注意的是,這種方法只對當前會話有效,如果你重啟Python解釋器,sys.path會恢復到默認值。如果你想要永久增加路徑,你可以修改PYTHONPATH環(huán)境變量,或者創(chuàng)建一個.pth文件放在site-packages目錄下。
希望這能幫助你理解如何使用sys.path增加路徑。如果你還有其他問題,歡迎繼續(xù)提問。??
查看全部 -
導入math模塊的方式有兩種:
一種是直接使用 import math ,這樣就可以使用 math.函數(shù)名 的形式調用math模塊中的函數(shù)。例如,要計算30度的正弦值,你可以寫:
import math
x = math.sin(math.radians(30)) # math.radians()是將角度轉換為弧度的函數(shù)print(x) # 輸出0.5復制
另一種是使用 from math import * ,這樣就可以直接使用函數(shù)名而不用加上 math. 的前綴。例如,要計算60度的余弦值,你可以寫:
from math import *
x = cos(radians(60)) # radians()是將角度轉換為弧度的函數(shù)print(x) # 輸出0.5查看全部 -
# common.py
def say_hello(name):
? ? print("Hello", name)
查看全部 -
class Fib(object):
? ? def __init__(self):
? ? ? ? self.a = 0
? ? ? ? self.b = 1
? ? def __call__(self, n):
? ? ? ? result = []
? ? ? ? for i in range(n):
? ? ? ? ? ? result.append(self.a)
? ? ? ? ? ? self.a, self.b = self.b, self.a + self.b
? ? ? ? return result
查看全部 -
class Fib:
? ? def __init__(self, n):
? ? ? ? self.n = n
? ? ? ? self.a = 0
? ? ? ? self.b = 1
? ? ? ? self.index = 0
? ? def __iter__(self):
? ? ? ? return self
? ? def __next__(self):
? ? ? ? if self.index < self.n:
? ? ? ? ? ? self.a, self.b = self.b, self.a + self.b
? ? ? ? ? ? self.index += 1
? ? ? ? ? ? return self.a
? ? ? ? else:
? ? ? ? ? ? raise StopIteration
? ? def __len__(self):
? ? ? ? return self.n
? ? def __repr__(self):
? ? ? ? return "Fib({})".format(self.n)
? ? def __str__(self):
? ? ? ? return ", ".join(str(x) for x in self)
# 測試代碼
f = Fib(10)
print(f) # 打印數(shù)列的前10個元素
print(len(f)) # 打印數(shù)列的個數(shù)
查看全部
舉報