- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
换句话说,两个星号后面存在什么?是简单地将数字乘以 x 还是其他什么?
作为后续问题,写2**3
vẫn2*2*2
比较好。我问是因为我听说在 C++ 中最好不要使用 pow()
进行简单计算,因为它会调用一个函数。
câu trả lời hay nhất
如果您对内部结构感兴趣,我会反汇编指令以获取它映射到的 CPython 字节码。使用 Python3:
»»» def test():
return 2**3
...:
»»» dis.dis(test)
2 0 LOAD_CONST 3 (8)
3 RETURN_VALUE
好的,这似乎已经在输入时就完成了计算,并存储了结果。对于 2*2*2,您将获得完全相同的 CPython 字节码(请随意尝试)。因此,对于计算结果为常量的表达式,您会得到相同的结果,这无关紧要。
如果你想要变量的力量怎么办?
现在你得到了两个不同的字节码:
»»» def test(n):
return n ** 3
»»» dis.dis(test)
2 0 LOAD_FAST 0 (n)
3 LOAD_CONST 1 (3)
6 BINARY_POWER
7 RETURN_VALUE
sự tương phản
»»» def test(n):
return n * 2 * 2
....:
»»» dis.dis(test)
2 0 LOAD_FAST 0 (n)
3 LOAD_CONST 1 (2)
6 BINARY_MULTIPLY
7 LOAD_CONST 1 (2)
10 BINARY_MULTIPLY
11 RETURN_VALUE
现在的问题当然是,BINARY_MULTIPLY 是否比 BINARY_POWER 操作更快?
最好的尝试方法是使用 timeit。我将使用 IPython %timeit
魔法。这是乘法的输出:
%timeit test(100)
The slowest run took 15.52 times longer than the fastest. This could mean that an intermediate result is being cached
10000000 loops, best of 3: 163 ns per loop
为了权力
The slowest run took 5.44 times longer than the fastest. This could mean that an intermediate result is being cached
1000000 loops, best of 3: 473 ns per loop
您可能希望对代表性输入重复此操作,但根据经验,乘法看起来更快(但请注意上述关于输出方差的警告)。
如果您想了解更多内部信息,我建议您深入研究 CPython 代码。
关于python - Python中的幂运算符(**)翻译成什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33762613/
Toán tử Or thực hiện phép toán OR logic trên hai biểu thức. kết quả = biểu thức1 Hoặc tham số biểu thức2 kết quả là bất kỳ biến số nào. biểu thức1 bất kỳ
Toán tử Not thực hiện thao tác NOT logic trên một biểu thức. result = Không phải tham số biểu thức, kết quả là bất kỳ biến số nào. biểu hiện bất kỳ biểu thức. Giải thích bảng dưới đây cho thấy như thế nào
Toán tử Is so sánh hai biến tham chiếu đối tượng. result = object1 Là tham số object2, kết quả là bất kỳ biến số nào. object1 bất kỳ tên đối tượng nào. đối tượng2 bất kỳ
Toán tử \ chia hai số và trả về kết quả được biểu thị dưới dạng số nguyên. tham số result = number1\number2 kết quả là bất kỳ biến số nào. number1 Bất kỳ biểu thức số nào. tê
Toán tử And thực hiện phép toán logic AND trên hai biểu thức. result = biểu thức1 Và tham số biểu thức2 kết quả là bất kỳ biến số nào. biểu thức1
Toán tử (+) tính tổng của hai số. Tham số result = biểu thức1 + biểu thức2 kết quả là bất kỳ biến số nào. biểu thức1 bất kỳ biểu thức nào. điểm kinh nghiệm
Tôi bối rối về đoạn mã này: var n1 = 5-"4"; var n2 = 5+"4"; cảnh báo (n1); Tôi biết n1 là 1. Đó là vì toán tử trừ biến chuỗi "4" thành
Tôi nghĩ tôi sẽ nhận được 12 thay vì 7. w++, thì w sẽ là 4, tức là 100, và w++, w sẽ là 8, 1000; vậy w++|z++ sẽ là 100|1000 = 1100, sẽ là 12. Có chuyện gì với tôi vậy? int
Toán tử Xor thực hiện phép toán OR loại trừ logic trên hai biểu thức. kết quả = biểu thức1 Tham số Xor biểu thức2 kết quả là bất kỳ biến số nào. biểu thức1
Toán tử mod chia hai số và trả về số dư. result = number1 Tham số Mod number2 kết quả là bất kỳ biến số nào. number1 Bất kỳ biểu thức số nào. tê
Toán tử Imp thực hiện thao tác hàm ý logic trên hai biểu thức. result = biểu thức1 Imp biểu thức2 Kết quả tham số Bất kỳ biến số nào. biểu thức1 bất kỳ
Toán tử Eqv thực hiện sự tương đương logic của hai biểu thức. result = biểu thức1 Eqv biểu thức2 Kết quả tham số Bất kỳ biến số nào. biểu thức1 bất kỳ
Tôi có một lớp vectơ toán học đơn giản với việc nạp chồng toán tử. Tôi muốn nhận được một số kết quả về thời gian cho nhà điều hành của mình. Tôi có thể dễ dàng tính thời gian +=, -=, *= và /= bằng cách tính thời gian cho đoạn mã sau: Tổng vectơ cho (s);
Tôi chưa quen với các toán tử so sánh do người dùng xác định. Tôi đang đọc một cuốn sách và nó đề cập đến ví dụ sau: struct P { int x, y bool operator, operator<>
Trên trang Wikipedia về SQL, có một số bảng chân lý cho logic bool trong SQL. [1] Trang Wikipedia dường như được bắt nguồn từ tiêu chuẩn SQL:2003. Bảng chân trị cho toán tử đẳng thức (=) và I trong bản nháp SQL:2003
Tôi đã gặp một toán tử C++ lạ. http://www.terralib.org/html/v410/classoracle_1_1occi_1_1_number.html#a0f2780081f
Tôi đang đọc về một câu hỏi trong SO và câu trả lời được đề cập là: Nếu không tìm thấy hàm phân bổ khớp rõ ràng nào, pr
Tôi tình cờ tìm ra giải pháp này nhưng tôi không thể hiểu chính xác điều gì đang xảy ra trong đó. Ai có thể giải thích giùm được không! Theo mình hiểu thì nó cố đếm số ô trong lưới a*b bằng cách đếm một nửa số ô rồi nhân đôi. Nhưng tôi không thể hiểu được cuộc gọi đệ quy. Vui lòng không đề xuất giải pháp khác
Kiểu cơ bản của Go Kiểu Boolean bool Độ dài: 1 byte Giá trị: Giá trị của kiểu Boolean chỉ có thể là đúng hoặc sai và không thể biểu thị bằng số. Kiểu số nguyên phổ quát int/uint (có dấu/không dấu, tương tự bên dưới) ) Độ dài: Theo để vận chuyển
Trong hướng dẫn này, bạn sẽ tìm hiểu về các toán tử khác nhau có sẵn trong JavaScript và cách sử dụng chúng với sự trợ giúp của các ví dụ. Người vận hành là gì? Trong JavaScript, toán tử là một ký hiệu đặc biệt dùng để thực hiện các phép toán trên toán hạng (giá trị và biến). Ví dụ,
Tôi là một lập trình viên xuất sắc, rất giỏi!