关于函数操作的解析

开课吧开课吧锤锤2021-03-19 15:22

    Python工程师主要从事爬虫开发、Web开发及数据分析工作,随着人工智能的崛起,Python作为最好的工具语言,已经被广泛的大量使用。作为一门可“连接”其他语言的胶水语言,他是工程师的最爱的效率工具,因其庞大的类库,让你的项目能够快速的完成试错,随着大数据和AI时代的开启,Python成为数据专家和AI工程师必备的技能之一。

py

    函数操作

    函数是重用的程序段。它们允许你给一块语句一个名称,然后你可以在你的程序的任何地方使用这个名称任意多次地运行这个语句块。这被称为调用函数。我们已经使用了许多内建的函数,比如len,range,input,int,str。

    也可以导入特定包里面的函数,比如os.getcwd,sys.exit。

    函数通过def关键字定义。def关键字后跟一个函数的标识符名称,然后跟一对圆括号。圆括号之中可以包括一些变量名,该行以冒号结尾。接下来是一块语句,它们是函数体。

#自定义函数def print_hello():
    print("Hello, you!")

print_hello()
Hello, you!
def hello(who):
    print("Hello, %s!" % who)

hello('you')
hello('me')
Hello, you!
Hello, me!
#自定义函数def sum_num(a, b):
    c = a + b    return c

d = sum_num(3, 4)
d
7

    局部变量和全局变量

    全局作用:函数之外,从定义位置起,所有逻辑下游的语句都可以使用

    局部作用:函数之内,出了函数就不可以被识别

    局部可以使用global访问全局变量,而全局不能使用局部变量。

var = 1def variable_test():
    var = 2print("var before running variable_test()", var)
variable_test()
print("var after running variable_test()", var)
var before running variable_test() 1
var after running variable_test() 1
var = 1def variable_test():
    global var
    var = 2print("var before running variable_test()", var)
variable_test()
print("var after running variable_test()", var)
var before running variable_test() 1
var after running variable_test() 2
# 全局变量在局部作用域中使用def spam():
    print("eggs in spam",eggs)

eggs = 28spam()
eggs in spam 28
# 全局变量在局部作用域中使用# 但若局部也有其定义,容易引发未定义冲突def spam():
    print(eggs)
    eggs = 29eggs = 28spam()
print(eggs)
---------------------------------------------------------------------------

UnboundLocalError                         Traceback (most recent call last)

 in ()
      6 
      7 eggs = 28
----> 8 spam()
      9 print(eggs)

 in spam()
      1 # 全局变量在局部作用域中使用
      2 def spam():
----> 3     print(eggs)
      4     eggs = 29
      5 

UnboundLocalError: local variable 'eggs' referenced before assignment
# 尽量避免名称相同的局部变量和全局变量def spam():
    eggs = 'spam local'
    print("eggs in spam",eggs)  # 输出spam localdef bacon():
    eggs = 'bacon local'
    print("eggs in bacon", eggs)  # 输出bacon local
    spam()
    print("eggs in bacon after running spam", eggs)  # 输出bacon localeggs = 'global'bacon()
print("Global eggs", eggs)
eggs in bacon bacon local
eggs in spam spam local
eggs in bacon after running spam bacon local
Global eggs global
print("把之前写过的语句块稍微包装下就是函数了\n")def findAll(string, pattern):
    posL = []
    pos = 0
    for i in string:
        pos += 1
        if i == pattern:
            posL.append(pos)    #-------------------
    return posL#------END of findAll-------a = findAll("ABCDEFDEACFBACACA", "A")
print(a)
print(findAll("ABCDEFDEACFBACACA", "B"))
把之前写过的语句块稍微包装下就是函数了

[1, 9, 13, 15, 17]
[2, 12]
def read(file):
    aDict = {}    for line in open(file):        if line[0] == '>':
            name = line.strip()
            aDict[name] = []        else:
            aDict[name].append(line.strip())    #----------------------------------
    for name, lineL in list(aDict.items()):
        aDict[name] = ''.join(lineL)    return aDict

print(read("data/test1.fa"))
read("data/test2.fa")
{'>NM_001011874 gene=Xkr4 CDS=151-2091': 'gcggcggcgggcgagcgggcgctggagtaggagctggggagcggcgcggccggggaaggaagccagggcg', '>NM_001195662 gene=Rp1 CDS=55-909': 'AGGTCTCACCCAAAATGAGTGACACACCTTCTACTAGTTTCTCCATGATTCATCTGACTTCTGAAGGTCA', '>NM_0112835 gene=Rp15 CDS=128-6412': 'AATAAATCCAAAGACATTTGTTTACGTGAAACAAGCAGGTTGCATATCCAGTGACGTTTATACAGACCAC', '>NM_011283 gene=Rp1 CDS=128-6412': 'AATAAATCCAAAGACATTTGTTTACGTGAAACAAGCAGGTTGCATATCCAGTGACGTTTATACAGACCAC'}

{'>NM_001011874 gene=Xkr4 CDS=151-2091': 'gcggcggcgggcgagcgggcgctggagtaggagctggggagcggcgcggccggggaaggaaGTCGGGGTCCGGAG',
 '>NM_001195662 gene=Rp1 CDS=55-909': 'AAGCTCAGCCTTTGCTCAGATTCTCCTCTTGATGAAACAAAGGGATTTCTGCACCAGGCTGGAGGAGCTAGAGGACGGCAAGTCTTATGTGTGCTCCCACAATAAGAAGGTGCTG',
 '>NM_011283 gene=Rp1 CDS=128-6412': 'AATAAATCCAAAGACATTTGTTTACGTGAAACAAGCAGGTTGCATATCCAGTGGTCTTCCGGAATGGTGACCCGAA',
 '>NM_0112835 gene=Rp1 CDS=128-6412': 'AATAAATCCAAAGACATTTGTTTACGTGAAACAAGCAGGTTGCATATCCAGTGGTCTTCCGGAATGGTGACCCGAA'}

    以上就是函数操作的全部内容,更多Python教程相关内容尽在开课吧广场Python教程频道。

有用
分享