2010-07-23 1 views
9

Почему python говорит мне, что «TypeError: pow ожидается 2 аргумента, получил 3», несмотря на то, что он работает в IDLE (иногда это говорит мне, что и в IDLE)? им просто делать pow(a,b,c). моя программа очень короткая, и я не изменяю определение pow в любое время, так как мне нужно использовать его для некоторого возведения в степень.Почему Python говорит, что pow имеет только 2 аргумента

ПРИМЕЧАНИЕ: Это pow из __builtin__, не Math

ответ

14

Встроенный pow принимает два или три аргумента. Если вы делаете from math import *, то он заменяется на math's pow, который принимает только два аргумента. Моя рекомендация состоит в том, чтобы сделать import math или явно перечислять функции, которые вы используете в списке импорта. Аналогичная проблема возникает с open против os.open.

+0

ах ... может быть, поэтому. благодаря!!!!! err ... мог ли импорт из другого файла повлиять на него? im импортировать другую написанную мной программу, которая также имеет 'from math import *' – calccrypto

+0

@calccrypto: Если вы импортируете другую программу с 'from p import * ', тогда да. Используйте 'import p' или список явно 'из p import [...]'. – sdcvvc

0

http://docs.python.org/release/2.6.5/library/functions.html

pow(x, y[, z]) Return x to the power y; if z is present, return x to the power y, modulo z (computed more efficiently than pow(x, y) % z). The two-argument form pow(x, y) is equivalent to using the power operator: x**y.

The arguments must have numeric types. With mixed operand types, the coercion rules for binary arithmetic operators apply. For int and long int operands, the result has the same type as the operands (after coercion) unless the second argument is negative; in that case, all arguments are converted to float and a float result is delivered. For example, 102 returns 100, but 10-2 returns 0.01. (This last feature was added in Python 2.2. In Python 2.1 and before, if both arguments were of integer types and the second argument was negative, an exception was raised.) If the second argument is negative, the third argument must be omitted. If z is present, x and y must be of integer types, and y must be non-negative. (This restriction was added in Python 2.2. In Python 2.1 and before, floating 3-argument pow() returned platform-dependent results depending on floating-point rounding accidents.)

Возможно, вы нарушив смелую часть?

+0

нет. im уверен, что все значения являются целыми положительными Редактировать: yep. a, b, c = 9, 4, 225 – calccrypto

1

Если вы используете математические функции, много и версия три параметра мощн нечасто способ обойти это в Python 2.7 импортировать __builtin__ и вызвать __builtin__ .pow для 3 paramete

+0

В обоих случаях должно быть два символа подчеркивания с обеих сторон «builitin», но форматирование интерпретируется как жирный шрифт - не уверен, что делать с thaat. –

 Смежные вопросы

  • Нет связанных вопросов^_^