Roy Smith wrote: > In article <[EMAIL PROTECTED]>, Sambo <[EMAIL PROTECTED]> > wrote: > > >>I have the following module: >>------------------------------- >>import math >> >>def ac_add_a_ph( amp1, ph1, amp2, ph2 ): >> >> amp3 = 0.0 >> ph3 = 0.0 >> ac1 = ( 0, 0j ) >> ac2 = ( 0, 0j ) >> ac3 = ( 0, 0j ) >> ac1 = complex( amp1 * math.cos( math.radians( ph1 ) ), amp1 * math.sin( >> math.radians( ph1 ) ) ) >> ac2 = complex( amp2 * math.cos( math.radians( ph2 ) ), amp2 * math.sin( >> math.radians( ph2 ) ) ) >> ac3 = ac1 + ac2 >> amp3 = math.abs( ac3 ) >> ph3 = math.atan( ac3.imag / ac3.real ) >> return [amp3, ph3] >>-------------------------------------- >>when I import it (electronics) in python.exe in windows2000 and >>try to use it, it croaks. ??? >> >> >>>>>import math >>>>>import electronics >>>>>print electronics.ac_add_a_ph( 10, 0 , 6 , 45 ) >> >>Traceback (most recent call last): >> File "<stdin>", line 1, in ? >> File "f:\devel\python\electronics.py", line 10, in ac_add_a_ph >> ac1 = complex( amp1 * math.cos( math.radians( ph1 ) ), amp1 * math.sin( >> math >>.radians( ph1 ) ) ) >>NameError: global name 'cos' is not defined >> > > That's not what I get when I run it (admittedly, not on windows). I get: > > >>>>import math >>>>import electronics >>>>print electronics.ac_add_a_ph( 10, 0 , 6 , 45 ) > > Traceback (most recent call last): > File "<stdin>", line 1, in ? > File "electronics.py", line 13, in ac_add_a_ph > amp3 = math.abs( ac3 ) > AttributeError: 'module' object has no attribute 'abs' > > > which is exactly what I expected, since abs (which is indeed absolute > value) is a built-in function, not a part of the math module. Are you sure > the stack trace you posted matches the source code you posted? > Well I took the abs( 'complex' ) from the python documentation (python24.chm) section 3.1.1 has the following comment after it '# sqrt(a.real**2 + a.imag**2)'
> By the way, when using math functions, I find it's usually easier to import > them into my namespace by doing "from math import *", then I can just use > sin(), cos(), etc directly, instead of having to do math.sin() or > math.cos(). Especially for common math functions, this makes your code a > lot easier to read. Ah, I thought I used to use module functions without the module name. I think my problem is reimporting electronics(.py) after modifications. Yes, now it complains about abs(). looks like enother reason to dump this w2000 installation just so I can install python from scratch and use idle. -- http://mail.python.org/mailman/listinfo/python-list