Warning when doubly linked list is defined gloablly

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • chand

    #1

    Warning when doubly linked list is defined gloablly

    Hi.,

    In my api.py file 'g_opt_list' is defined globally
    g_opt_list =[[],[],[],[],[],[],[]]

    I am using this global list in the fucntion

    def function ():
    gloabl g_opt_list

    when I run the py file, I am getting the Following Error

    SyntaxWarning: name 'g_opt_list' is used prior to global declaration

    Please let me know how to remove this error

    --BestRegars.,
    --Chandra

  • Diez B. Roggisch

    #2
    Re: Warning when doubly linked list is defined gloablly


    chand wrote:[color=blue]
    > In my api.py file 'g_opt_list' is defined globally
    > g_opt_list =[[],[],[],[],[],[],[]]
    >
    > I am using this global list in the fucntion
    >
    > def function ():
    > gloabl g_opt_list[/color]

    This is obviously wrong and not the code you wrote, global being
    written horribly wrong - which should teach you an important lesson:
    post actual code that exposes the problem, not something you think that
    is working. Then we might be able to help you.

    Diez

    Comment

    • Benjamin Niemann

      #3
      Re: Warning when doubly linked list is defined gloablly

      chand wrote:
      [color=blue]
      > Hi.,
      >
      > In my api.py file 'g_opt_list' is defined globally
      > g_opt_list =[[],[],[],[],[],[],[]]
      >
      > I am using this global list in the fucntion
      >
      > def function ():
      > gloabl g_opt_list[/color]

      global?
      [color=blue]
      > when I run the py file, I am getting the Following Error
      >
      > SyntaxWarning: name 'g_opt_list' is used prior to global declaration
      >
      > Please let me know how to remove this error[/color]

      This happens in cases like[color=blue][color=green][color=darkred]
      >>> a = 1
      >>> def c():[/color][/color][/color]
      .... a
      .... global a

      Does your source only consist of the three lines above? (These would trigger
      a SyntaxError because of the typo...)
      You should provide a more complete example, so we can tell you where the
      problem is. Try to build a minimal file that reproduces the problem. Often
      you will find the line causing the error yourself - and the fix might be
      obvious to you -, if your strip stuff away.

      --
      Benjamin Niemann
      Email: pink at odahoda dot de
      WWW: http://www.odahoda.de/

      Comment

      • Terry Reedy

        #4
        Re: Warning when doubly linked list is defined gloablly


        "chand" <chandra.bangal ore@gmail.com> wrote in message
        news:1124881914 .018491.315800@ g14g2000cwa.goo glegroups.com.. .[color=blue]
        > Hi.,
        >
        > In my api.py file 'g_opt_list' is defined globally
        > g_opt_list =[[],[],[],[],[],[],[]]
        >
        > I am using this global list in the fucntion
        >
        > def function ():
        > gloabl g_opt_list
        >
        > when I run the py file, I am getting the Following Error
        >
        > SyntaxWarning: name 'g_opt_list' is used prior to global declaration
        >
        > Please let me know how to remove this error[/color]

        To expand slightly on previous answers:

        1. Write a *minimal* file that gives you the error. This means that
        removing any statement ceases to give you the error. This may answer your
        questions.

        2. If still puzzled, post again. But cut and paste that *exact* file and
        also the *full* error traceback.

        Terry J. Reedy



        Comment

        • chand

          #5
          Re: Warning when doubly linked list is defined gloablly

          Hi Terry..,

          Here is the code which gives the error...

          Let me know exact reason for this Error


          import os,sys,re,strin g,math
          from xml.dom import minidom, Node
          from Layer import Layer
          from LMessage import *
          from Param import *
          from Message import *
          from message_mapping import *
          from protocol_mappin g import *
          from symbol_mapping import *
          from opt_list_mappin g import *
          g_del_opt_list =[[],[],[],[],[],[],[]]
          sflag = 0
          index=0
          del_index=0
          radflag = 0
          depth = 0
          xmlflag = 0
          opt_param_list = []
          del_opt_param_l ist = []
          #g_opt_list = []
          MTAS_HOME="/home/chandras/XML_FILES/"
          SIG_STANDARD_HO ME = "/home/chandras/SIGNALLING_STAN DARD/ANSI_SS7/"
          symbols=['(',')','{','}' ,'[',']','.']
          reverse_symbols =['<','>','~']
          layers=['MTP3','SCCP',' IOS','CDTAPM2', 'CDTAPC2','ISUP ','IS-41D-SQA']
          GUI_API_COMMAND _LIST = [
          "NEW",
          "ADD_OPTIONAL_P ARAM",
          "DELETE_OPTIONA L_PARAM",
          "DELETE_LAY ER",
          "RENAME"
          ]

          BASE2 = "01"
          BASE10 = "0123456789 "
          BASE16 = "0123456789ABCD EF"

          Message_obj = Message()
          filename =""
          buffer = []
          #LIST = []
          def Process_GUI_Com mand(arg):
          global Message_obj
          global filename
          print "### COMMAND ###", arg[0]
          save_fd = os.dup(1)
          if arg[0] == "DELETE_OPTIONA L_PARAM":
          out_file = file('/tmp/te6.txt', 'w+')
          elif arg[0] == "ADD_OPTIONAL_P ARAM":
          out_file = file('/tmp/te3.txt', 'w+')
          else :
          out_file = file('/tmp/te.txt', 'w+')
          os.dup2(out_fil e.fileno(), sys.stdout.file no())

          if arg[0] == "NEW" :
          global g_opt_list
          Message_obj = Message()
          layerList = listLayers("ANS I_Layers")
          layerList = str(layerList)
          layerList = layerList.repla ce(",","")
          for i in range(0,len(g_o pt_list)):
          g_opt_list[i] = []
          os.dup2(save_fd , 1)
          return layerList


          elif arg[0] == "ADD_OPTIONAL_P ARAM" :
          global g_opt_list
          global layers
          global index
          message_name = ""
          layer_name = arg[1]
          #print "Layer Name", layer_name
          for layer in layers:
          if layer == layer_name:
          if OPT_LIST_MAPPIN G.has_key(layer _name):
          index = OPT_LIST_MAPPIN G[layer_name]
          break

          if arg[2] != 'Null':
          optional_parame ter_name = str(arg[2]).replace("+"," ,")
          for symbol in reverse_symbols :
          if symbol in optional_parame ter_name:
          if SYMBOL_REVERSE_ MAPPING.has_key (symbol):
          old_symbol = SYMBOL_REVERSE_ MAPPING[symbol]
          optional_parame ter_name =
          optional_parame ter_name.replac e(symbol,old_sy mbol)


          Message_obj.Add Param(message_n ame,layer_name,
          optional_parame ter_name )
          else : optional_parame ter_name= 'Null'


          add_delete_flag = 0

          param_name = optional_parame ter_name
          show_opts(layer _name,add_delet e_flag,param_na me)
          if int(add_delete_ flag) == 0:
          add_delete_flag = 0
          if optional_parame ter_name != "Null":
          optList =
          Message_obj.sho wOptionalParame ters(layer_name ,add_delete_fla g,optional_para meter_name)
          g_opt_list[int(index)].append(optiona l_parameter_nam e)
          for i in g_opt_list[int(index)]:
          if g_opt_list[int(index)].count(i) == 1:
          optList =
          Message_obj.sho wOptionalParame ters(layer_name ,add_delete_fla g,i)
          displayoptparam s(optList,layer _name,0,"Null")
          i= "Null"
          optional_parame ter_name = "Null"
          add_delete_flag = 1
          os.dup2(save_fd , 1)

          else:
          print "Invalid Option"



          def show_opts(layer _name,add_delet e_flag,param_na me):
          global index
          global g_opt_list
          #param_name = "Null"
          List =
          Message_obj.sho wOptionalParame ters(layer_name ,add_delete_fla g,"Null")
          if (len(List)== 0) :
          return "None"
          displayoptparam s(List,layer_na me,add_delete_f lag,Message_obj ._message_name)
          if param_name == 'Null':
          for i in g_opt_list[int(index)]:
          if g_opt_list[int(index)].count(i) == 1:
          optList =
          Message_obj.sho wOptionalParame ters(layer_name ,add_delete_fla g,i)
          displayoptparam s(optList,layer _name,0,"Null")
          add_delete_flag = 1
          return "None"



          def main():

          #choice = sys.argv[1]
          print "####### choice ",
          #Process_GUI_Co mmand("NEW")
          #list=CMSR.show OptionalParamet ers("SCCP",0)
          #CMSR.saveXMLfi le("CMSR2.xml", "CMSR")


          if __name__ == '__main__':
          main()


          --Thanks and bestregards.,
          --Chandra

          Terry Reedy wrote:[color=blue]
          > "chand" <chandra.bangal ore@gmail.com> wrote in message
          > news:1124881914 .018491.315800@ g14g2000cwa.goo glegroups.com.. .[color=green]
          > > Hi.,
          > >
          > > In my api.py file 'g_opt_list' is defined globally
          > > g_opt_list =[[],[],[],[],[],[],[]]
          > >
          > > I am using this global list in the fucntion
          > >
          > > def function ():
          > > gloabl g_opt_list
          > >
          > > when I run the py file, I am getting the Following Error
          > >
          > > SyntaxWarning: name 'g_opt_list' is used prior to global declaration
          > >
          > > Please let me know how to remove this error[/color]
          >
          > To expand slightly on previous answers:
          >
          > 1. Write a *minimal* file that gives you the error. This means that
          > removing any statement ceases to give you the error. This may answer your
          > questions.
          >
          > 2. If still puzzled, post again. But cut and paste that *exact* file and
          > also the *full* error traceback.
          >
          > Terry J. Reedy[/color]

          Comment

          • chand

            #6
            Re: Warning when doubly linked list is defined gloablly

            Hi All..,


            Sorry for mailing the code which does't even compile !!

            Please find below the code which compiles. Please let me know how to
            resolve this warning message..!!
            SyntaxWarning: name 'g_opt_list' is used prior to global declaration


            import os,sys,re,strin g,math
            from xml.dom import minidom, Node
            from Layer import Layer
            from LMessage import *
            from Param import *
            from Message import *
            #from message_mapping import *
            #from protocol_mappin g import *
            #from symbol_mapping import *
            #from opt_list_mappin g import *
            g_del_opt_list =[[],[],[],[],[],[],[]]
            sflag = 0
            index=0
            del_index=0
            radflag = 0
            depth = 0
            xmlflag = 0
            opt_param_list = []
            del_opt_param_l ist = []
            #g_opt_list = []
            MTAS_HOME="/home/chandras/XML_FILES/"
            SIG_STANDARD_HO ME = "/home/chandras/SIGNALLING_STAN DARD/ANSI_SS7/"
            reverse_symbols =['<','>','~']
            layers=['MTP3','SCCP',' IOS','CDTAPM2', 'CDTAPC2','ISUP ','IS-41D-SQA']
            GUI_API_COMMAND _LIST = [
            "NEW",
            "ADD_OPTIONAL_P ARAM",
            "DELETE_OPTIONA L_PARAM",
            "DELETE_LAY ER",
            "RENAME"
            ]

            BASE2 = "01"
            BASE10 = "0123456789 "
            BASE16 = "0123456789ABCD EF"

            Message_obj = Message()
            filename =""
            buffer = []
            #LIST = []
            def Process_GUI_Com mand(arg):
            global Message_obj
            global filename
            print "### COMMAND ###", arg[0]
            save_fd = os.dup(1)
            if arg[0] == "DELETE_OPTIONA L_PARAM":
            out_file = file('/tmp/te6.txt', 'w+')
            elif arg[0] == "ADD_OPTIONAL_P ARAM":
            out_file = file('/tmp/te3.txt', 'w+')
            else :
            out_file = file('/tmp/te.txt', 'w+')
            os.dup2(out_fil e.fileno(), sys.stdout.file no())

            if arg[0] == "NEW" :
            global g_opt_list
            Message_obj = Message()
            layerList = listLayers("ANS I_Layers")
            layerList = str(layerList)
            layerList = layerList.repla ce(",","")
            for i in range(0,len(g_o pt_list)):
            g_opt_list[i] = []
            os.dup2(save_fd , 1)
            return layerList

            elif arg[0] == "ADD_OPTIONAL_P ARAM" :
            global g_opt_list
            global layers
            global index
            message_name = ""
            layer_name = arg[1]
            #print "Layer Name", layer_name
            for layer in layers:
            if layer == layer_name:
            if
            OPT_LIST_MAPPIN G.has_key(layer _name):
            index =
            OPT_LIST_MAPPIN G[layer_name]
            break

            if arg[2] != 'Null':
            optional_parame ter_name =
            str(arg[2]).replace("+"," ,")
            for symbol in reverse_symbols :
            if symbol in optional_parame ter_name:
            if
            SYMBOL_REVERSE_ MAPPING.has_key (symbol):
            old_symbol =
            SYMBOL_REVERSE_ MAPPING[symbol]
            optional_parame ter_name
            = optional_parame ter_name.replac e(symbol,old_sy mbol)

            Message_obj.Add Param(message_n ame,layer_name,
            optional_parame ter_name )
            else : optional_parame ter_name= 'Null'

            add_delete_flag = 0

            param_name = optional_parame ter_name
            show_opts(layer _name,add_delet e_flag,param_na me)
            if int(add_delete_ flag) == 0:
            add_delete_flag = 0
            if optional_parame ter_name != "Null":
            optList =
            Message_obj.sho wOptionalParame ters(layer_name ,add_delete_fla g,optional_para meter_name)

            g_opt_list[int(index)].append(optiona l_parameter_nam e)
            for i in g_opt_list[int(index)]:
            if
            g_opt_list[int(index)].count(i) == 1:
            optList =
            Message_obj.sho wOptionalParame ters(layer_name ,add_delete_fla g,i)

            displayoptparam s(optList,layer _name,0,"Null")
            i= "Null"
            optional_parame ter_name = "Null"
            add_delete_flag = 1
            os.dup2(save_fd , 1)

            else:
            print "Invalid Option"


            def show_opts(layer _name,add_delet e_flag,param_na me):
            global index
            global g_opt_list
            #param_name = "Null"
            List =
            Message_obj.sho wOptionalParame ters(layer_name ,add_delete_fla g,"Null")
            if (len(List)== 0) :
            return "None"

            displayoptparam s(List,layer_na me,add_delete_f lag,Message_obj ._message_name)
            if param_name == 'Null':
            for i in g_opt_list[int(index)]:
            if g_opt_list[int(index)].count(i) == 1:
            optList =
            Message_obj.sho wOptionalParame ters(layer_name ,add_delete_fla g,i)

            displayoptparam s(optList,layer _name,0,"Null")
            add_delete_flag = 1
            return "None"



            def main():

            #choice = sys.argv[1]
            print "####### choice ",
            #Process_GUI_Co mmand("NEW")
            #list=CMSR.show OptionalParamet ers("SCCP",0)
            #CMSR.saveXMLfi le("CMSR2.xml", "CMSR")

            if __name__ == '__main__':
            main()






















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































            chand wrote:[color=blue]
            > Hi.,
            >
            > In my api.py file 'g_opt_list' is defined globally
            > g_opt_list =[[],[],[],[],[],[],[]]
            >
            > I am using this global list in the fucntion
            >
            > def function ():
            > gloabl g_opt_list
            >
            > when I run the py file, I am getting the Following Error
            >
            > SyntaxWarning: name 'g_opt_list' is used prior to global declaration
            >
            > Please let me know how to remove this error
            >
            > --BestRegars.,
            > --Chandra[/color]

            Comment

            • Peter Otten

              #7
              Re: Warning when doubly linked list is defined gloablly

              chand wrote:
              [color=blue]
              > Sorry for mailing the code which does't even compile !![/color]

              You probably missed that other hint where Fredrik Lunddh told you to
              somewhat reduce the script's size.
              [color=blue]
              > Please find below the code which compiles. Please let me know how to
              > resolve this warning message..!!
              > SyntaxWarning: name 'g_opt_list' is used prior to global declaration[/color]

              This warning occurs if a global variable is used before it is declared as
              such:
              [color=blue][color=green][color=darkred]
              >>> def f():[/color][/color][/color]
              .... v = 42
              .... global v
              ....
              <stdin>:1: SyntaxWarning: name 'v' is assigned to before global declaration

              This kind of code is dangerous because a casual reader might think that v is
              a local variable. You can avoid the warning -- and the source of confusion
              -- by moving the declaration to before the variable's first usage (I prefer
              the top of the function):
              [color=blue][color=green][color=darkred]
              >>> def f():[/color][/color][/color]
              .... global v
              .... v = 42
              ....

              In your script things are even more messed up. You declare g_opt_list twice:
              [color=blue][color=green][color=darkred]
              >>> def f():[/color][/color][/color]
              .... global v
              .... v = 42
              .... global v
              ....
              <stdin>:1: SyntaxWarning: name 'v' is assigned to before global declaration

              Now that you understand the cause of the warning it is time to proceed to
              yet another effbot hint: You never rebind the global variable g_opt_list
              and therefore do not need the

              global g_opt_list

              statement at all.

              Peter

              Comment

              • Terry Reedy

                #8
                Re: Warning when doubly linked list is defined gloablly


                "chand" <chandra.bangal ore@gmail.com> wrote in message
                news:1125920251 .848815.208400@ g44g2000cwa.goo glegroups.com.. .[color=blue]
                > Please let me know how to
                > resolve this warning message..!!
                > SyntaxWarning: name 'g_opt_list' is used prior to global declaration[/color]

                Post the entire error traceback.
                Post the entire error traceback.
                Post the entire error traceback ;-).
                [color=blue]
                >
                >
                >
                >
                >[/color]
                [hundreds? more snipped]

                Don't post hundread of blank lines. It took me at least half a minute to
                delete them for this reply.

                Terry J. Reedy



                Comment

                Working...