zoukankan      html  css  js  c++  java
  • python函数

    函数介绍


    提高代码利用率,将重复执行的代码单独放在一块;

    定义函数:函数名满足标识符规则,首字母不能大写。

    def 函数名():
               代码
    #定义函数: 
      1 def print_hell():
      2     print("hello,world")
    #执行函数
      3 print_hell()
    [root@localhost python]# python3 25.py 
    hello,world

    函数中的参数:

    [root@localhost python]# 
      1 def test1(r):
      2     s=3.14*(r**22)
      3     print("圆的面积为:%s"%s)
      4 
      5 r=int(input("input r:"))
      6 test1(r)
    
      7 test1(3) #直接传参
    
    [root@localhost python]# python3 26.py 
    input r:3
    圆的面积为:98536527172.26001
    圆的面积为:98536527172.26001

     函数中的多参数:

    def 函数名(参数1,参数2 .......) #参数名可以随便写,在之前不需要定义,形参:特点不需要在前面定义,也不会和之前定义的变量冲突
      1 a=1
      2 def test2(a,b):
      3     sum = a + b
      4     print("%s+%s=%s"%(a,b,sum))
      5 b=2
      6 test2(a,b)
      7 test2(a,2)#在调用函数的时候传给函数参数的数据叫实参,20是实参,a=1为实参。实参可以引用定义的变量,也可以定义一个值
    
    [root@localhost python]# python3 27.py 
    1+2=3
    1+2=3

    定义时小括号中定义的参数为形参,调用时小括号中定义的参数为实参

    函数返回值

      1 def cel(a,b,c):
      2     sum = a + b -c
      3     return s #return被执行之后,不管return后面还有什么代码都能不会执行
      4 def s_noreturn(a,b):
      5     sum1=a+b
      6 a=1
      7 b=2
      8 c=1
      9 s=cel(a,b,c) #需要一个变量接收函数返回值。
     10 s2=s_noreturn(a,b)
     11 print(s2)
     12 print(s)
     13 
    [root@localhost python]# python3 28.py 
    None  #默认函数返回值
    2
      
      1 def cel(a,b):
      2     if not isinstance(a,(int,float)):#判断变量类型,满足其中一种类型返回True
      3         print("传入的a:%s不是数字类型"%a)
      4         return
      5     elif not isinstance(b,(int,float)):#判断变量类型,满足其中一种类型返回True
      6         print("传入的a:%s不是数字类型"%a)
      7         return
      8     else:
      9         sum = a + b 
     10         return sum    
     15 s=cel("abc",2)
     16 print(s)
     15 s=cel(1,"2")
     16 print(s)
     17 a=1 
     18 b=2 
     19 s=cel(a,b) 
     20 print(s)
    [root@localhost python]# python3 28.py 
    传入的a:abc不是数字类型
    None
    传入的a:2不是数字类型
    None
    3

    练习:

      
      1 def avg_3(a,b,c):
      2     if is_number(a) and is_number(b) and is_number(c):
      3         return (a+b+c)/3
      4     else:
      5         print("传入参数类型不对")
      6 
      7 
      8 def is_number(a):
      9     if not isinstance(a,(int,float)):
     10         print("传入的参数%s不是一个数字"%a)
     11         return False
     12     else:
     13         return True
     14 
     15 avg=avg_3("abc",2,3)
     16 print(avg)
     17 avg=avg_3(4,4,4)
     18 print(avg)
    
    [root@localhost python]# python3 29.py 
    传入的参数abc不是一个数字
    传入参数类型不对
    None
    4.0

     python中代码的执行顺序。

      1 avg=avg_3("abc",2,3)
      2 print(avg)
      3 avg=avg_3(4,4,4)
      4 print(avg)
      5 def avg_3(a,b,c):
      6     if is_number(a) and is_number(b) and is_number(c): 
      7         return (a+b+c)/3
      8     else:
      9         print("传入参数类型不对")
     10 
     11 
     12 def is_number(a):
     13     if not isinstance(a,(int,float)):
     14         print("传入的参数%s不是一个数字"%a)
     15         return False
     16     else:
     17         return True
    [root@localhost python]# python3 29.py Traceback (most recent call last): File "29.py", line 1, in <module> avg=avg_3("abc",2,3) NameError: name 'avg_3' is not defined
    #python中代码执行从第一行开始执行,读一行,翻译一行,调用函数要放在定义之后。先执行第一行代码def,内存中加载函数体,下来执行第12行代码,加载第二个函数体,下来执行19行,执行调用函数,

    1 def avg_3(a,b,c): 2 if is_number(a) and is_number(b) and is_number(c): 3 return (a+b+c)/3 4 else: 5 print("传入参数类型不对") 6 7 avg=avg_3("abc",2,3) 8 print(avg) 9 avg=avg_3(4,4,4) 10 print(avg) 11 12 def is_number(a): 13   if not isinstance(a,(int,float)): 14     print("传入的参数%s不是一个数字"%a) 15     return False 16    else: 17    return True [root@localhost python]# python3 29.py Traceback (most recent call last): File "29.py", line 7, in <module> avg=avg_3("abc",2,3) File "29.py", line 2, in avg_3 if is_number(a) and is_number(b) and is_number(c): NameError: name 'is_number' is not defined [root@localhost python]#

    全局变量和局部变量

    局部变量:函数内部定义的变量;不同的函数可以定义相同名字的局部变量,但是各用各的不会产生影响,局部变量的作用,为了临保存数据需要在函数中定义变量来进行存储

    全局变量:如果一个变量,既能在一个函数中使用,也能在其他函数中使用,这样的变量就是全局变量。

      1 def test1(): #第一行加载函数体,并未执行
      2     a=200 #a为局部变量,局部变量只能在该函数中使用,作用范围在该函数里面,出了函数之外就不生效了
      3     print(a)
      4 print(a) #第二条执行此行代码
      5 test1()
    [root@localhost python]# python3 30.py 
    Traceback (most recent call last):
      File "30.py", line 4, in <module>
        print(a)
    NameError: name 'a' is not defined
      1 def test1():
      2     a=200
      3     print(a)
      4 def test2():
      5     a=300
      6     print(a)
      7 test1()
      8 test2()
    [root@localhost python]# python3 30.py 
    200
    300
      1 a=400#全局变量可以在后面的代码中使用。
      2 def test1():
      3     a=200#局部变量只能在该函数中使用,作用范围在该函数中,不一定是修改全局变量。一般来说是在函数中声明了一个局部变量。
      4     a+=1
      5     print(a)
      6 def test2():
      7     #a=300
      8     print(a) #输出的a为全局变量。
      9 test1()
     10 test2()
    [root@localhost python]# python3 30.py 
    201
    400      
      1 a=400#全局变量可以在后面的代码中使用
      2 def test1():
      3     a=200#局部变量只能在该函数中使用,作用范围在该函数中
      4     a+=1
      5     print(a)
      6     return a #将函数中的返回值通过参数传递到其他函数中
      7 def test2(a):
      8     #a=300#如果函数中的局部变量和全局变量的名字一样,优先使用局部变量,形参可以理解为局部变量。
      9     print(a)
     10 b=test1()
     11 test2(b)
    [root@localhost python]# python3 30.py 
    201
    201
  • 相关阅读:
    java如何实现以数据流的形式下载压缩包到本地?
    在用easyui中做CRUD功能时,当删除一行或多行数据后再点击修改会提示你选中了多行,如何解决这个bug了?
    windows中当你的键盘无法使用时我们可以用另一种方法哦
    Idea中如何将web项目打包成war包并放到tomcat中启动
    [CSS3] Use media query to split css files and Dark mode (prefers-color-scheme: dark)
    [PWA] Storage information for PWA application
    [HTML5] Native lazy-loading for the web
    [Dynamic Programming] 198. House Robber
    [Javascript] Sort by multi factors
    [Javascript] Keyword 'in' to check prop exists on Object
  • 原文地址:https://www.cnblogs.com/zhaoyujiao/p/9032711.html
Copyright © 2011-2022 走看看