-
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f依次作用在list的每个元素上,map()函数会返回一个迭代器,可以依次迭代得到原来list的元素被函数f处理后的结果。
查看全部 -
def calc_prod(list_):
def prod():
result = 1
for x in list_:
result *= xreturn result
return prod
这个代码的思路是使用了一个闭包,也就是一个定义在函数内部的函数,它可以访问外部函数的变量。这样,当我们调用calc_prod(list_)时,它会返回一个prod函数,这个函数保存了list_的值,然后当我们调用prod()时,它会遍历list_中的元素并计算它们的乘积。
这个代码也可以用reduce函数来简化,reduce函数可以对一个序列应用一个二元操作符,并累积结果。例如,我们可以用operator模块中的mul函数来表示乘法操作:
from operator import mul # from functools
import reduce # python3 compatibility
def calc_prod(list_):
return lambda:
reduce(mul, list_, 1)
这里我们用lambda表达式来定义一个匿名函数,它返回reduce(mul, list_, 1)的结果。reduce(mul, list_, 1)的意思是从1开始,依次用mul函数把list_中的元素相乘,并返回最终结果。
查看全部 -
文件对象还提供seek()方法,可以移动文件的游标位置,它接受一个参数,表示文件的位置,0:文件首部,1:当前位置,2:文件尾部,通过seek()可以把文件游标移动到文件首部但不删除文件的内容。
查看全部 -
文件对象提供read()方法,可以读取文件中的若干个字符,它提供一个参数size,可以指定读取字符的数量。
s = f.read(5)
print(s) # ==> Hello当read()之后,访问文件的游标就会移动到第六个字符前面,此时,继续read,将得到Hello后面的结果。
s = f.read(6)
print(s) # ==> ' World'查看全部 -
注意,为了安全操作文件,文件使用完毕后,需要使用close()函数正确关闭。
查看全部 -
__call__ 方法定义了一个可以将类实例当作函数调用的功能。它接受一个参数 "num",表示要生成的斐波那契数列的长度。
在 __call__ 方法内部,定义了两个变量 "a" 和 "b",初始值分别为 0 和 1。使用一个循环迭代 "num" 次。
在每次迭代中,将 "a" 的值添加到 "res" 列表中。然后,通过交换 "a" 和 "b" 的值更新它们的值,即将 "b" 赋值给 "a",将 "a + b" 的和赋值给 "b"。
查看全部 -
python的函数式编程
1、不是纯函数式编程:允许有变量
2、支持高阶函数:函数可以作为变量
3、支持闭包:可以返回函数
4、支持匿名函数
查看全部 -
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这个参数就是指代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为本机回环IP)
server.listen(5) # 3. 监听连接
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')) # 发送内容,注意发送的是字节字符串。
content = client.recv(1024)
print(str(content, encoding='utf-8'))
client.close()查看全部 -
你好,这是必应。😊
sys.path是Python的一个列表,用于存储模块的搜索路径。当你使用import语句导入模块时,Python会在sys.path中列出的路径中查找相应的模块。要使用sys.path增加路径,你可以使用sys.path.append()函数,将新的路径添加到列表的末尾。
例如,如果你想要导入当前目录上级目录的包,你可以在你的代码中写:
import sys
sys.path.append('../') # 添加上级目录的路径import package # 导入上级目录的包复制
这样,Python就可以在上级目录中找到package这个包,并导入它。需要注意的是,这种方法只对当前会话有效,如果你重启Python解释器,sys.path会恢复到默认值。如果你想要永久增加路径,你可以修改PYTHONPATH环境变量,或者创建一个.pth文件放在site-packages目录下。
希望这能帮助你理解如何使用sys.path增加路径。如果你还有其他问题,欢迎继续提问。😊
查看全部 -
导入math模块的方式有两种:
一种是直接使用 import math ,这样就可以使用 math.函数名 的形式调用math模块中的函数。例如,要计算30度的正弦值,你可以写:
import math
x = math.sin(math.radians(30)) # math.radians()是将角度转换为弧度的函数print(x) # 输出0.5复制
另一种是使用 from math import * ,这样就可以直接使用函数名而不用加上 math. 的前缀。例如,要计算60度的余弦值,你可以写:
from math import *
x = cos(radians(60)) # radians()是将角度转换为弧度的函数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) # 打印数列的前10个元素
print(len(f)) # 打印数列的个数
查看全部
举报