zoukankan      html  css  js  c++  java
  • Python 函数的使用小结

    函数的好处:提高代码复用性,简化代码,代码可扩展。

    函数只有调用的时候才会被执行。

    1.参数:

    形参&实参;

    位置参数,属于必填参数;
    默认值参数,为非必填参数,没有传值时使用默认值;
    关键字参数;
    可变参数;
    不定长参数;

    例1:
     1 # file_name,content 为位置参数,属于必填参数,content1是默认值参数,没有传入值为使用默认值,非必填参数
     2 def write_file(file_name,content,content1 = 'test'): # 形参,形式参数,
     3     f = open(file_name,'a+',encoding='utf-8')
     4     f.seek(0)
     5     f.write(content + '---' +content1 + '
    ')
     6     f.close()
     7 write_file('file0.txt','hello world') #向文件'file.txt' 写入 content 为'hello world',以及content1的默认值 'test'
     8 #write_file('file0.txt') # 只传一个会报错,content1是默认值参数可以不传值
     9 write_file('file0.txt','aaa','see you') #实参,实际参数,写入'aaa' 以及'see you'
    10 write_file(file_name='file0.txt',content ='good') # 关键字参数
    结果如下:

    例2: *args 的使用

    def test1(a,b=1,*args): # *args 可变参数, 不一定写*args, 也可以别的,可随意写,但是一般都是写*args
        print(a,b,args)
        #print(args[0]) # 元祖第一个值,如果函数调用的时候没有传入*args的值,这句话会报错
    test1('ttti') #ttti 1 ()
    # 位置调用,第一个给a, 第二个给b, 后面的都是*args
    test1('nancy',2,'123','456','789') # args 是个元祖 -> args ('123', '456', '789')
    #nancy 2 ('123', '456', '789')
    #关键字调用,可变参数不能和关键字一起调用,如果可变参数要传值的话要按顺序来传
    test1(b=5,a=10)#10 5 ()
    t =(1,2,3,4)
    test1(*t)
    #1 2 (3, 4)
    y = [6,7,8]
    test1(*y)
    #6 7 (8,)
    r = {'aa':'09','bb':'89','cc':'78'}
    test1(*r) #打印的是字典的key,因为字典也无序,所有打印的值会变
    #cc aa ('bb',)

    例3:**kwargs的使用

    def test2(**kwargs):
        print(kwargs)
    test2() # -> {} 空字典
    test2(name = 'hhh',sex = '18')  # -> {'name': 'hhh', 'sex': '18'}

    2. 返回值

    如果想获取到函数处理的结果,那么必须return,
    如果函数没有写retun的话,返回结果是None,
    函数里遇到return,函数立即结束。
     1 def test_1(file_name,content = 'ttt'):
     2     f = open(file_name,'a+',encoding='utf-8')
     3     #return
     4     if content:
     5         f.write(content + '
    ')
     6         res = ''
     7     else:
     8         f.seek(0)
     9         res = f.read()
    10         #return res # 写在这的话,如果走else 时,遇到return 函数立即结果,那么文件不会被关闭,因此要放在f.close() 下面
    11     f.close()
    12     return res
    13 #print(res)  #函数里的变量外面不能引用
    14 text = test_1('file3.txt')
    15 print(text)

    3. 局部变量和全局变量

    全局变量的作用域是整个程序,在程序最前面定义,全局变量如果要在函数中修改的话,需要加global关键字声明,如果是list、字典和集合的话,则不需要加global关键字,直接就可以修改。

    1 a = 100   #全局变量
    2 def test():
    3     #global a #如果想要修改全局变量的值,必须要声明一下
    4     print(a) 
    5     a = 5  # 局部变量
    6     print(a)
    7 test() # 函数要调用才能使用

    这种情况直接print(a) 会报错,UnboundLocalError: local variable 'a' referenced before assignment

    变量在使用前必须要先声明。

    如果第4行想打印全局变量a =100的值的话,可以使用第3行,记住,使用前先声明。

    这样输入的结果为100 和5,第一个输出的是全局变量100,第二个是局部变量5。

    4. 递归:自己调用自己

    1 def test1():
    2     num = int(input('please enter a number:'))
    3     if num % 2 ==0: #判断输入的数字是不是偶数
    4         return True
    5     print('不是偶数请重新输入')
    6     return test1() # 如果不是偶数的话继续调用自己,输入值
    7 print(test1()) #调用test1()
  • 相关阅读:
    金融学专业排名
    学经济学专业排行榜
    国内,美国数学专业排名
    为什么国外程序员爱用苹果 Mac 电脑?
    计算机专业-世界大学学术排名,QS排名,U.S.NEWS排名
    基金合作伙伴
    融资晚报:一大波创业公司获得融资
    有哪些适合学生参与的 C++,网络编程方面的开源项目?
    SuperSocket内置的命令行协议的解析
    C# Socket 您的主机中的软件中止了一个已建立的连接 An established connection was aborted by the software in your host machine
  • 原文地址:https://www.cnblogs.com/nancyzhu/p/8253966.html
Copyright © 2011-2022 走看看