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