Fundamental Function Question (beginner)

r0g aioe.org at technicalbloke.com
Mon Jan 11 14:16:36 EST 2010


r0g wrote:
> Scott wrote:
>> When creating a function is there any difference between putting
>> everything under the "def" or not?
>>
>> Here I created a function called CscoPortNum to convert the network
>> port number field in a Cisco syslog string from a an ascii name back
>> into its numeric form if required. Does it matter at all that I
>> created the translation dictionary first and then started the def?
>>
>> # def CscoPortNum(RulL)
>> # Accept a single ACL Rule as a List split into individual words and
>> # return Port number. Convert from Cisco syslog Port name if required
>> portfpth = "\\progra~1\\syslogd\\ACL_Logs\\Port-Translations.txt"
>> # Create dictionary of portnames to portnumbers
>> portD = {}
>> for prtnmS in open(portfpth):
>>     prtnmS = prtnmS.rstrip()
>>     spltprtL = prtnmS.split(" ")
>>     portD[spltprtL[2]] = [spltprtL[1]]
>> def CscoPortNum(RulL):
>>     if "eq" in RulL:    # Is the Port listed?
>>         if RulL[RulL.index("eq")+1][0].isdigit(): # Is it numeric?
>> #        if re.search("\d", RulL[RulL.index("eq")+1][0]): # Is it
>> numeric?
>>             portnum = RulL[RulL.index("eq")+1]     # If numeric, use
>> as is.
>>         else:
>>             # If named, look up numeric translation
>>             portnum = portD[RulL[RulL.index("eq")+1]]
>>             portnum = str(portnum).strip("[]'")
>>     else:  portnum = "noeq"
>>     return portnum
> 
> 
> In this snippet no, you're not calling the function in the preceding
> code so there's no problem. You can intersperse functions with the rest
> of your code however you like, they just wont be visible to the
> preceding code, but it's better to stick them all at the top of your
> script. Even better when you have more than a handful is to bundle
> functions into separate py files and then import that file e.g.
> 
> ---contents of foobar.py-----
> def foo():
>     print "foo"
> def bar:
>     print "bar"
> 
> ---contents of your main script-----
> import foobar
> print foo(),bar()
> 
> Roger.


Whoops, that should have been...

> ---contents of your main script-----
> import foobar
> print foobar.foo(),foobar.bar()

Roger.
>



More information about the Python-list mailing list