zoukankan      html  css  js  c++  java
  • Python-函数作用域和集合列表字典元祖

    变量作用域

    • 变量由作用范围限制
    • 分类:按照作用域分类
      • 全局(global): 在函数外部定义
      • 局部(local):在函数内部定义
    • 变量的作用范围:
      • 全局变量:在整个全局范围都有效
      • 全局变量在局部可以使用(即函数内部可以方位函数外部定义的变量)
      • 局部变量在局部范围可以使用
      • 局部变量在全局范围无法使用
    • LEGB原则
      • L(Local)局部作用域
      • E(Enclosing function locale)外部嵌套函数作用域
      • G(Global module)函数定义所在模块作用域
      • B(Buildin): python内置魔抗的作用域
        # 认为a1是全局的
        a1 = 100
        
        def fun():
            print(a1)
            print("I am in fun")
            # a2的作用范围是fun
            a2 = 99
            print(a2)
            
            
        print(a1)
        fun()
        print(a2)
        
        
        输出结果如下:
        
        100
        100
        I am in fun
        99
        ---------------------------------------------------------------------------
        NameError                                 Traceback (most recent call last)
        <ipython-input-4-36e1efbb7d66> in <module>()
             12 print(a1)
             13 fun()
        ---> 14 print(a2)
        
        NameError: name 'a2' is not defined
        View Code

    提升局部变量为全局变量

    • 使用global
    • 案例如下
      def fun():
          global b1
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      
      #print(b2)
      fun()
      # print(b1)如果在函数调用上面,则不好使,报错,为什么???
      print(b1)
      
      
      
      输出结果如下:
      
      100
      I am in fun
      99
      100
      View Code

    globals, locals函数

    • 可以通过globals和locals显示出局部变量和全局变量
    • 参看以下案例
      # globals 和 locals
      # globals 和 locals 叫做内建函数
      a = 1
      b = 2
      
      def fun(c,d):
          e = 111
          print("Locals={0}".format(locals()))
          print("Globals={0}".format(globals()))
          
      fun(100, 200)
      
      
      
      输出结果如下:
      
      Locals={'e': 111, 'd': 200, 'c': 100}
      Globals={'__name__': '__main__', '__doc__': 'Automatically created module for IPython interactive environment', '__package__': None, '__loader__': None, '__spec__': None, '__builtin__': <module 'builtins' (built-in)>, '__builtins__': <module 'builtins' (built-in)>, '_ih': ['', '# 认为a1是全局的
      a1 = 100
      
      def fun():
          print(a1)
          print("I am in fun")
          # a2的作用范围是fun
          a2 = 99
          print(a2)
          
          
      print(a1)
      #print(a2)', '# 认为a1是全局的
      a1 = 100
      
      def fun():
          print(a1)
          print("I am in fun")
          # a2的作用范围是fun
          a2 = 99
          print(a2)
          
          
      print(a1)
      fun()
      #print(a2)', '# 认为a1是全局的
      a1 = 100
      
      def fun():
          print(a1)
          print("I am in fun")
          # a2的作用范围是fun
          a2 = 99
          print(a2)
          
          
      print(a1)
      fun()
      print(a2)', '# 认为a1是全局的
      a1 = 100
      
      def fun():
          print(a1)
          print("I am in fun")
          # a2的作用范围是fun
          a2 = 99
          print(a2)
          
          
      print(a1)
      fun()
      print(a2)', '
      def fun():
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      print(b2)
      fun()', '
      def fun():
          global b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      #print(b2)
      fun()', '
      def fun():
          global b1
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      #print(b2)
      fun()', '
      def fun():
          global b1
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      #print(b2)
      fun()', '
      def fun():
          b1 = 100
          global b1
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      #print(b2)
      fun()', '# globals 和 locals
      a = 1
      b = 2
      
      def fun(c,d):
          e = 111
          print("Locals={0}".format(locals()))
          print("Globals={0}".format(globals()))
          
      fun(100, 200)'], '_oh': {}, '_dh': ['/home/tlxy/cookbook_and_code'], 'In': ['', '# 认为a1是全局的
      a1 = 100
      
      def fun():
          print(a1)
          print("I am in fun")
          # a2的作用范围是fun
          a2 = 99
          print(a2)
          
          
      print(a1)
      #print(a2)', '# 认为a1是全局的
      a1 = 100
      
      def fun():
          print(a1)
          print("I am in fun")
          # a2的作用范围是fun
          a2 = 99
          print(a2)
          
          
      print(a1)
      fun()
      #print(a2)', '# 认为a1是全局的
      a1 = 100
      
      def fun():
          print(a1)
          print("I am in fun")
          # a2的作用范围是fun
          a2 = 99
          print(a2)
          
          
      print(a1)
      fun()
      print(a2)', '# 认为a1是全局的
      a1 = 100
      
      def fun():
          print(a1)
          print("I am in fun")
          # a2的作用范围是fun
          a2 = 99
          print(a2)
          
          
      print(a1)
      fun()
      print(a2)', '
      def fun():
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      print(b2)
      fun()', '
      def fun():
          global b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      #print(b2)
      fun()', '
      def fun():
          global b1
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      #print(b2)
      fun()', '
      def fun():
          global b1
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      #print(b2)
      fun()', '
      def fun():
          b1 = 100
          global b1
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      #print(b2)
      fun()', '# globals 和 locals
      a = 1
      b = 2
      
      def fun(c,d):
          e = 111
          print("Locals={0}".format(locals()))
          print("Globals={0}".format(globals()))
          
      fun(100, 200)'], 'Out': {}, 'get_ipython': <bound method InteractiveShell.get_ipython of <ipykernel.zmqshell.ZMQInteractiveShell object at 0x7f891e18d198>>, 'exit': <IPython.core.autocall.ZMQExitAutocall object at 0x7f8914136fd0>, 'quit': <IPython.core.autocall.ZMQExitAutocall object at 0x7f8914136fd0>, '_': '', '__': '', '___': '', '_i': '
      def fun():
          b1 = 100
          global b1
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      #print(b2)
      fun()', '_ii': '
      def fun():
          global b1
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      #print(b2)
      fun()', '_iii': '
      def fun():
          global b1
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      #print(b2)
      fun()', '_i1': '# 认为a1是全局的
      a1 = 100
      
      def fun():
          print(a1)
          print("I am in fun")
          # a2的作用范围是fun
          a2 = 99
          print(a2)
          
          
      print(a1)
      #print(a2)', 'a1': 100, 'fun': <function fun at 0x7f88fbfb5268>, '_i2': '# 认为a1是全局的
      a1 = 100
      
      def fun():
          print(a1)
          print("I am in fun")
          # a2的作用范围是fun
          a2 = 99
          print(a2)
          
          
      print(a1)
      fun()
      #print(a2)', '_i3': '# 认为a1是全局的
      a1 = 100
      
      def fun():
          print(a1)
          print("I am in fun")
          # a2的作用范围是fun
          a2 = 99
          print(a2)
          
          
      print(a1)
      fun()
      print(a2)', '_i4': '# 认为a1是全局的
      a1 = 100
      
      def fun():
          print(a1)
          print("I am in fun")
          # a2的作用范围是fun
          a2 = 99
          print(a2)
          
          
      print(a1)
      fun()
      print(a2)', '_i5': '
      def fun():
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      print(b2)
      fun()', '_i6': '
      def fun():
          global b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      #print(b2)
      fun()', '_i7': '
      def fun():
          global b1
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      #print(b2)
      fun()', '_i8': '
      def fun():
          global b1
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      #print(b2)
      fun()', '_i9': '
      def fun():
          b1 = 100
          global b1
          b1 = 100
          print(b1)
          print("I am in fun")
          # a2的作用范围是fun
          b2 = 99
          print(b2)
          
          
      print(b1)
      #print(b2)
      fun()', '_i10': '# globals 和 locals
      a = 1
      b = 2
      
      def fun(c,d):
          e = 111
          print("Locals={0}".format(locals()))
          print("Globals={0}".format(globals()))
          
      fun(100, 200)', 'a': 1, 'b': 2}
      View Code

    eval()函数

    • 把一个字符串当成一个表达式来执行, 返回表达式执行后的结果

    • 语法:

            eval(string_code, globals=None, locals=None)

    exec()函数

    • 跟eval功能类似, 但是,不返回结果

    • 语法:

        exec(string_code, globals=None, locals=None)
      x = 100
      y = 200
      # 执行x+y
      # z = x + y
      z1 = x + y
      z2 = eval("x+y")
      
      print(z1)
      print(z2)
      
      
      输出结果如下:
      
      300
      300
      
      
      # exec示例
      x = 100
      y = 200
      # 执行x+y
      # z = x + y
      z1 = x + y
      # 1, 注意字符串中引号的写法
      # 2. 比对exec执行结果和代码执行结果
      z2 = exec("print('x+y:', x+y)")
      
      print(z1)
      print(z2)
      
      
      输出结果如下:
      
      x+y: 300
      300
      None
      View Code

    递归函数

    • 含税直接或者间接调用自身
    • 优点:简洁,理解容易
    • 缺点:对递归深度有限制,消耗资源大
    • python对递归深度有限制,超过限制报错
    • 在写递归程序的时候,一定注意结束条件
      # 递归调用深度限制代码
      
      x = 0
      
      def fun():
          global x
          x += 1
          print(x)
          # 函数自己调用自己
          fun()
          
      # 调用函数
      fun()
      
      
      输出结果如下:
      
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      122
      123
      124
      125
      126
      127
      128
      129
      130
      131
      132
      133
      134
      135
      136
      137
      138
      139
      140
      141
      142
      143
      144
      145
      146
      147
      148
      149
      150
      151
      152
      153
      154
      155
      156
      157
      158
      159
      160
      161
      162
      163
      164
      165
      166
      167
      168
      169
      170
      171
      172
      173
      174
      175
      176
      177
      178
      179
      180
      181
      182
      183
      184
      185
      186
      187
      188
      189
      190
      191
      192
      193
      194
      195
      196
      197
      198
      199
      200
      201
      202
      203
      204
      205
      206
      207
      208
      209
      210
      211
      212
      213
      214
      215
      216
      217
      218
      219
      220
      221
      222
      223
      224
      225
      226
      227
      228
      229
      230
      231
      232
      233
      234
      235
      236
      237
      238
      239
      240
      241
      242
      243
      244
      245
      246
      247
      248
      249
      250
      251
      252
      253
      254
      255
      256
      257
      258
      259
      260
      261
      262
      263
      264
      265
      266
      267
      268
      269
      270
      271
      272
      273
      274
      275
      276
      277
      278
      279
      280
      281
      282
      283
      284
      285
      286
      287
      288
      289
      290
      291
      292
      293
      294
      295
      296
      297
      298
      299
      300
      301
      302
      303
      304
      305
      306
      307
      308
      309
      310
      311
      312
      313
      314
      315
      316
      317
      318
      319
      320
      321
      322
      323
      324
      325
      326
      327
      328
      329
      330
      331
      332
      333
      334
      335
      336
      337
      338
      339
      340
      341
      342
      343
      344
      345
      346
      347
      348
      349
      350
      351
      352
      353
      354
      355
      356
      357
      358
      359
      360
      361
      362
      363
      364
      365
      366
      367
      368
      369
      370
      371
      372
      373
      374
      375
      376
      377
      378
      379
      380
      381
      382
      383
      384
      385
      386
      387
      388
      389
      390
      391
      392
      393
      394
      395
      396
      397
      398
      399
      400
      401
      402
      403
      404
      405
      406
      407
      408
      409
      410
      411
      412
      413
      414
      415
      416
      417
      418
      419
      420
      421
      422
      423
      424
      425
      426
      427
      428
      429
      430
      431
      432
      433
      434
      435
      436
      437
      438
      439
      440
      441
      442
      443
      444
      445
      446
      447
      448
      449
      450
      451
      452
      453
      454
      455
      456
      457
      458
      459
      460
      461
      462
      463
      464
      465
      466
      467
      468
      469
      470
      471
      472
      473
      474
      475
      476
      477
      478
      479
      480
      481
      482
      483
      484
      485
      486
      487
      488
      489
      490
      491
      492
      493
      494
      495
      496
      497
      498
      499
      500
      501
      502
      503
      504
      505
      506
      507
      508
      509
      510
      511
      512
      513
      514
      515
      516
      517
      518
      519
      520
      521
      522
      523
      524
      525
      526
      527
      528
      529
      530
      531
      532
      533
      534
      535
      536
      537
      538
      539
      540
      541
      542
      543
      544
      545
      546
      547
      548
      549
      550
      551
      552
      553
      554
      555
      556
      557
      558
      559
      560
      561
      562
      563
      564
      565
      566
      567
      568
      569
      570
      571
      572
      573
      574
      575
      576
      577
      578
      579
      580
      581
      582
      583
      584
      585
      586
      587
      588
      589
      590
      591
      592
      593
      594
      595
      596
      597
      598
      599
      600
      601
      602
      603
      604
      605
      606
      607
      608
      609
      610
      611
      612
      613
      614
      615
      616
      617
      618
      619
      620
      621
      622
      623
      624
      625
      626
      627
      628
      629
      630
      631
      632
      633
      634
      635
      636
      637
      638
      639
      640
      641
      642
      643
      644
      645
      646
      647
      648
      649
      650
      651
      652
      653
      654
      655
      656
      657
      658
      659
      660
      661
      662
      663
      664
      665
      666
      667
      668
      669
      670
      671
      672
      673
      674
      675
      676
      677
      678
      679
      680
      681
      682
      683
      684
      685
      686
      687
      688
      689
      690
      691
      692
      693
      694
      695
      696
      697
      698
      699
      700
      701
      702
      703
      704
      705
      706
      707
      708
      709
      710
      711
      712
      713
      714
      715
      716
      717
      718
      719
      720
      721
      722
      723
      724
      725
      726
      727
      728
      729
      730
      731
      732
      733
      734
      735
      736
      737
      738
      739
      740
      741
      742
      743
      744
      745
      746
      747
      748
      749
      750
      751
      752
      753
      754
      755
      756
      757
      758
      759
      760
      761
      762
      763
      764
      765
      766
      767
      768
      769
      770
      771
      772
      773
      774
      775
      776
      777
      778
      779
      780
      781
      782
      783
      784
      785
      786
      787
      788
      789
      790
      791
      792
      793
      794
      795
      796
      797
      798
      799
      800
      801
      802
      803
      804
      805
      806
      807
      808
      809
      810
      811
      812
      813
      814
      815
      816
      817
      818
      819
      820
      821
      822
      823
      824
      825
      826
      827
      828
      829
      830
      831
      832
      833
      834
      835
      836
      837
      838
      839
      840
      841
      842
      843
      844
      845
      846
      847
      848
      849
      850
      851
      852
      853
      854
      855
      856
      857
      858
      859
      860
      861
      862
      863
      864
      865
      866
      867
      868
      869
      870
      871
      872
      873
      874
      875
      876
      877
      878
      879
      880
      881
      882
      883
      884
      885
      886
      887
      888
      889
      890
      891
      892
      893
      894
      895
      896
      897
      898
      899
      900
      901
      902
      903
      904
      905
      906
      907
      908
      909
      910
      911
      912
      913
      914
      915
      916
      917
      918
      919
      920
      921
      922
      923
      924
      925
      926
      927
      928
      929
      930
      931
      932
      933
      934
      935
      936
      937
      938
      939
      940
      941
      942
      943
      944
      945
      946
      947
      948
      949
      950
      951
      952
      953
      954
      955
      956
      957
      958
      959
      960
      961
      962
      963
      964
      965
      966
      967
      968
      969
      970
      971
      972
      973
      974
      975
      976
      977
      978
      979
      980
      981
      982
      983
      984
      985
      986
      987
      988
      989
      990
      991
      992
      993
      994
      995
      996
      997
      998
      999
      1000
      1001
      1002
      1003
      1004
      1005
      1006
      1007
      1008
      1009
      1010
      1011
      1012
      1013
      1014
      1015
      1016
      1017
      1018
      1019
      1020
      1021
      1022
      1023
      1024
      1025
      1026
      1027
      1028
      1029
      1030
      1031
      1032
      1033
      1034
      1035
      1036
      1037
      1038
      1039
      1040
      1041
      1042
      1043
      1044
      1045
      1046
      1047
      1048
      1049
      1050
      1051
      1052
      1053
      1054
      1055
      1056
      1057
      1058
      1059
      1060
      1061
      1062
      1063
      1064
      1065
      1066
      1067
      1068
      1069
      1070
      1071
      1072
      1073
      1074
      1075
      1076
      1077
      1078
      1079
      1080
      1081
      1082
      1083
      1084
      1085
      1086
      1087
      1088
      1089
      1090
      1091
      1092
      1093
      1094
      1095
      1096
      1097
      1098
      1099
      1100
      1101
      1102
      1103
      1104
      1105
      1106
      1107
      1108
      1109
      1110
      1111
      1112
      1113
      1114
      1115
      1116
      1117
      1118
      1119
      1120
      1121
      1122
      1123
      1124
      1125
      1126
      1127
      1128
      1129
      1130
      1131
      1132
      1133
      1134
      1135
      1136
      1137
      1138
      1139
      1140
      1141
      1142
      1143
      1144
      1145
      1146
      1147
      1148
      1149
      1150
      1151
      1152
      1153
      1154
      1155
      1156
      1157
      1158
      1159
      1160
      1161
      1162
      1163
      1164
      1165
      1166
      1167
      1168
      1169
      1170
      1171
      1172
      1173
      1174
      1175
      1176
      1177
      1178
      1179
      1180
      1181
      1182
      1183
      1184
      1185
      1186
      1187
      1188
      1189
      1190
      1191
      1192
      1193
      1194
      1195
      1196
      1197
      1198
      1199
      1200
      1201
      1202
      1203
      1204
      1205
      1206
      1207
      1208
      1209
      1210
      1211
      1212
      1213
      1214
      1215
      1216
      1217
      1218
      1219
      1220
      1221
      1222
      1223
      1224
      1225
      1226
      1227
      1228
      1229
      1230
      1231
      1232
      1233
      1234
      1235
      1236
      1237
      1238
      1239
      1240
      1241
      1242
      1243
      1244
      1245
      1246
      1247
      1248
      1249
      1250
      1251
      1252
      1253
      1254
      1255
      1256
      1257
      1258
      1259
      1260
      1261
      1262
      1263
      1264
      1265
      1266
      1267
      1268
      1269
      1270
      1271
      1272
      1273
      1274
      1275
      1276
      1277
      1278
      1279
      1280
      1281
      1282
      1283
      1284
      1285
      1286
      1287
      1288
      1289
      1290
      1291
      1292
      1293
      1294
      1295
      1296
      1297
      1298
      1299
      1300
      1301
      1302
      1303
      1304
      1305
      1306
      1307
      1308
      1309
      1310
      1311
      1312
      1313
      1314
      1315
      1316
      1317
      1318
      1319
      1320
      1321
      1322
      1323
      1324
      1325
      1326
      1327
      1328
      1329
      1330
      1331
      1332
      1333
      1334
      1335
      1336
      1337
      1338
      1339
      1340
      1341
      1342
      1343
      1344
      1345
      1346
      1347
      1348
      1349
      1350
      1351
      1352
      1353
      1354
      1355
      1356
      1357
      1358
      1359
      1360
      1361
      1362
      1363
      1364
      1365
      1366
      1367
      1368
      1369
      1370
      1371
      1372
      1373
      1374
      1375
      1376
      1377
      1378
      1379
      1380
      1381
      1382
      1383
      1384
      1385
      1386
      1387
      1388
      1389
      1390
      1391
      1392
      1393
      1394
      1395
      1396
      1397
      1398
      1399
      1400
      1401
      1402
      1403
      1404
      1405
      1406
      1407
      1408
      1409
      1410
      1411
      1412
      1413
      1414
      1415
      1416
      1417
      1418
      1419
      1420
      1421
      1422
      1423
      1424
      1425
      1426
      1427
      1428
      1429
      1430
      1431
      1432
      1433
      1434
      1435
      1436
      1437
      1438
      1439
      1440
      1441
      1442
      1443
      1444
      1445
      1446
      1447
      1448
      1449
      1450
      1451
      1452
      1453
      1454
      1455
      1456
      1457
      1458
      1459
      1460
      1461
      1462
      1463
      1464
      1465
      1466
      1467
      1468
      1469
      1470
      1471
      1472
      1473
      1474
      1475
      1476
      1477
      1478
      1479
      1480
      1481
      1482
      1483
      1484
      1485
      1486
      1487
      1488
      1489
      1490
      1491
      1492
      1493
      1494
      1495
      1496
      1497
      1498
      1499
      1500
      1501
      1502
      1503
      1504
      1505
      1506
      1507
      1508
      1509
      1510
      1511
      1512
      1513
      1514
      1515
      1516
      1517
      1518
      1519
      1520
      1521
      1522
      1523
      1524
      1525
      1526
      1527
      1528
      1529
      1530
      1531
      1532
      1533
      1534
      1535
      1536
      1537
      1538
      1539
      1540
      1541
      1542
      1543
      1544
      1545
      1546
      1547
      1548
      1549
      1550
      1551
      1552
      1553
      1554
      1555
      1556
      1557
      1558
      1559
      1560
      1561
      1562
      1563
      1564
      1565
      1566
      1567
      1568
      1569
      1570
      1571
      1572
      1573
      1574
      1575
      1576
      1577
      1578
      1579
      1580
      1581
      1582
      1583
      1584
      1585
      1586
      1587
      1588
      1589
      1590
      1591
      1592
      1593
      1594
      1595
      1596
      1597
      1598
      1599
      1600
      1601
      1602
      1603
      1604
      1605
      1606
      1607
      1608
      1609
      1610
      1611
      1612
      1613
      1614
      1615
      1616
      1617
      1618
      1619
      1620
      1621
      1622
      1623
      1624
      1625
      1626
      1627
      1628
      1629
      1630
      1631
      1632
      1633
      1634
      1635
      1636
      1637
      1638
      1639
      1640
      1641
      1642
      1643
      1644
      1645
      1646
      1647
      1648
      1649
      1650
      1651
      1652
      1653
      1654
      1655
      1656
      1657
      1658
      1659
      1660
      1661
      1662
      1663
      1664
      1665
      1666
      1667
      1668
      1669
      1670
      1671
      1672
      1673
      1674
      1675
      1676
      1677
      1678
      1679
      1680
      1681
      1682
      1683
      1684
      1685
      1686
      1687
      1688
      1689
      1690
      1691
      1692
      1693
      1694
      1695
      1696
      1697
      1698
      1699
      1700
      1701
      1702
      1703
      1704
      1705
      1706
      1707
      1708
      1709
      1710
      1711
      1712
      1713
      1714
      1715
      1716
      1717
      1718
      1719
      1720
      1721
      1722
      1723
      1724
      1725
      1726
      1727
      1728
      1729
      1730
      1731
      1732
      1733
      1734
      1735
      1736
      1737
      1738
      1739
      1740
      1741
      1742
      1743
      1744
      1745
      1746
      1747
      1748
      1749
      1750
      1751
      1752
      1753
      1754
      1755
      1756
      1757
      1758
      1759
      1760
      1761
      1762
      1763
      1764
      1765
      1766
      1767
      1768
      1769
      1770
      1771
      1772
      1773
      1774
      1775
      1776
      1777
      1778
      1779
      1780
      1781
      1782
      1783
      1784
      1785
      1786
      1787
      1788
      1789
      1790
      1791
      1792
      1793
      1794
      1795
      1796
      1797
      1798
      1799
      1800
      1801
      1802
      1803
      1804
      1805
      1806
      1807
      1808
      1809
      1810
      1811
      1812
      1813
      1814
      1815
      1816
      1817
      1818
      1819
      1820
      1821
      1822
      1823
      1824
      1825
      1826
      1827
      1828
      1829
      1830
      1831
      1832
      1833
      1834
      1835
      1836
      1837
      1838
      1839
      1840
      1841
      1842
      1843
      1844
      1845
      1846
      1847
      1848
      1849
      1850
      1851
      1852
      1853
      1854
      1855
      1856
      1857
      1858
      1859
      1860
      1861
      1862
      1863
      1864
      1865
      1866
      1867
      1868
      1869
      1870
      1871
      1872
      1873
      1874
      1875
      1876
      1877
      1878
      1879
      1880
      1881
      1882
      1883
      1884
      1885
      1886
      1887
      1888
      1889
      1890
      1891
      1892
      1893
      1894
      1895
      1896
      1897
      1898
      1899
      1900
      1901
      1902
      1903
      1904
      1905
      1906
      1907
      1908
      1909
      1910
      1911
      1912
      1913
      1914
      1915
      1916
      1917
      1918
      1919
      1920
      1921
      1922
      1923
      1924
      1925
      1926
      1927
      1928
      1929
      1930
      1931
      1932
      1933
      1934
      1935
      1936
      1937
      1938
      1939
      1940
      1941
      1942
      1943
      1944
      1945
      1946
      1947
      1948
      1949
      1950
      1951
      1952
      1953
      1954
      1955
      1956
      1957
      1958
      1959
      1960
      1961
      1962
      1963
      1964
      1965
      ---------------------------------------------------------------------------
      RecursionError                            Traceback (most recent call last)
      <ipython-input-15-342ffb5916b5> in <module>()
           11 
           12 # 调用函数
      ---> 13 fun()
      
      <ipython-input-15-342ffb5916b5> in fun()
            8     print(x)
            9     # 函数自己调用自己
      ---> 10     fun()
           11 
           12 # 调用函数
      
      ... last 1 frames repeated, from the frame below ...
      
      <ipython-input-15-342ffb5916b5> in fun()
            8     print(x)
            9     # 函数自己调用自己
      ---> 10     fun()
           11 
           12 # 调用函数
      
      RecursionError: maximum recursion depth exceeded in comparison
      View Code
      # 斐波那契额数列
      # 一列数字,第一个值是1, 第二个也是1, 从第三个开始,每一个数字的值等于前两个数字出现的值的和
      # 数学公式为: f(1) = 1, f(2) = 1, f(n) = f(n-1) + f(n-2)
      # 例如: 1,1,2,3,5,8,13.。。。。。。。。
      
      # 下面求斐波那契数列函数有一定问题,比如n一开始就是负数,如何修正
      # n表示求第n个数子的斐波那契数列的值
      def fib(n):
          if n == 1:
              return 1
          
          if n == 2:
              return 1
          
          # 思考:为什么后面return能够正确执行,而不用else语句
          return fib(n-1) + fib(n-2)
      
      print(fib(3))
      print(fib(10))
      
      
      输出结果如下:
      
      
      2
      55
      View Code

    内置数据结构(变量类型)

    • list
    • set
    • dict
    • tuple

      list(列表)

    • 一组由顺序的数据的组合
    • 创建列表
      • 空列表
        # 1, 创建空列表
        l1 = []
        # type是内置函数,负责打印出变量的类型
        print(type(l1))
        print(l1)
        
        # 2. 创建带值的列表
        l2 = [100]
        print(type(l2))
        print(l2)
        
        # 3. 创建列表,带多个值
        l3 = [2,3,1,4,6,4,6]
        print(type(l3))
        print(l3)
        
        # 4. 使用list()
        l4 = list()
        print(type(l4))
        print(l4)
        
        
        
        
        输出结果如下:
        
        <class 'list'>
        []
        <class 'list'>
        [100]
        <class 'list'>
        [2, 3, 1, 4, 6, 4, 6]
        <class 'list'>
        []
        View Code

    列表常用操作

    • 访问
      • 使用下标操作(索引)
      • 列表的位置是从0开始
    • 分片操作
      • 对列表进行任意一段的截取
      • l[:]
        # 下标访问列表
        l = [3,2,1,4,6,3,2]
        
        print(l[3])
        
        输出结果如下:
        
        4
        
        print(l[0])
        
        输出结果如下:
        
        3
        
        
        # 分片操作
        # 注意截取的范围,包含左边的下标值,不包含右边的下标值
        print(l[1:4])
        
        # 下标值可以为空,如果不写,左边下标值默认为0, 右边下标值为最大数加一,即表示截取到最后一个数据
        print(l[:])
        print(l[:4])
        print(l[2:])
        
        
        输出结果如下:
        
        [2, 1, 4]
        [3, 2, 1, 4, 6, 3, 2]
        [3, 2, 1, 4]
        [1, 4, 6, 3, 2]
        
        
        print(l)
        # 分片可以控制增长幅度,默认增长幅度为1
        print(l[1:6:1])
        
        # 打印从下标1开始的数字,每次隔一个
        print(l[1:6:2])
        
        # 下标可以超出范围,超出后不在考虑多余下标内容
        print(l[2:10])
        
        # 下标值,增长幅度可以为负数
        # 为负数,表明顺序是从右往左
        # 规定: 数组最后一个数字的下标是-1
        
        
        输出结果如下:
        
        [3, 2, 1, 4, 6, 3, 2]
        [2, 1, 4, 6, 3]
        [2, 4, 3]
        [1, 4, 6, 3, 2]
        [3, 2, 1]
        
        
        # 分片之负数下标
        print(l)
        # 下面显示的是为空,因为默认分片总是从左向右截取
        # 即正常情况,分片左边的值一定小于右边的值
        print(l[-2:-4])
        print(l[-4:-2])
        # 如果分片一定左边值比右边大,则步长参数需要使用负数
        # 此案例为一个list直接正反颠倒提供了一种思路
        print(l[-2:-4:-1])
        
        输出结果如下:
        
        [3, 2, 1, 4, 6, 3, 2]
        []
        [4, 6]
        [3, 6]
        View Code

    分片操作是生成一个新的list

    • 内置函数id,负责显示一个变量或者数据的唯一确定编号
      # id函数举例
      a = 100
      b = 200
      print(id(a))
      print(id(b))
      
      c = a
      print(id(c))
      
      # 如果a跟c只想一份数据,则更改a的值同样也会更改c的值
      # 但是,显示结果并非如此,为什么?
      a = 101
      print(a)
      print(c)
      
      
      输出结果如下:
      
      93941189949760
      93941189952960
      93941189949760
      101
      100
      
      
      # 通过id可以直接判断出分片是从新生成了一份数据还是使用的同一份数据
      l = [3,4,56,76,32,21,43,5]
      ll = l[:]
      lll = ll
      # 如果两个id值一样,则表明分片产生的列表是使用的同一地址同一份数据
      # 否则,则表明分片是从新生成了一份数据,即一个新的列表,然后把数值拷贝到新列表中
      print(id(l))
      print(id(ll))
      print(id(lll))
      
      # 通过id知道,ll和lll是同一份数据,验证代码如下
      l[1] = 100
      print(l)
      print(ll)
      
      ll[1] = 100
      print(ll)
      print(lll)
      
      
      输出结果如下:
      
      140226763582408
      140226318124808
      140226318124808
      [3, 100, 56, 76, 32, 21, 43, 5]
      [3, 4, 56, 76, 32, 21, 43, 5]
      [3, 100, 56, 76, 32, 21, 43, 5]
      [3, 100, 56, 76, 32, 21, 43, 5]
      View Code
  • 相关阅读:
    1908-逆序对(归并板子)
    4939-Agent2-洛谷
    1020-导弹拦截-洛谷
    5239-回忆京都-洛谷3月赛gg祭
    5238-整数校验器-洛谷3月赛gg祭
    最大子矩阵
    最长上升子序列(LIS)
    Zk单机多实例部署
    Zk集群部署
    zk单点部署
  • 原文地址:https://www.cnblogs.com/kellen-fang/p/12674489.html
Copyright © 2011-2022 走看看