• Python 函数


    函数能提高应用的模块性,和代码的重复利用率。

    定义一个函数:

      函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()

       任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

          函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

       函数内容以冒号起始,并且缩进。

       return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

    语法:

    1 def functionname( parameters ):
    2    "函数_文档字符串"
    3    function_suite
    4    return [expression]

    函数调用

    定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。(把具有独立功能代码块当作整数)

    这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。

    如下实例调用了printme()函数:

     1 # -*- coding: UTF-8 -*-
     2  
     3 # 定义函数
     4 def printme( str ):
     5    "打印任何传入的字符串"
     6    print str;
     7    return;
     8  
     9 # 调用函数
    10 printme("我要调用用户自定义函数!");
    11 printme("再次调用同一函数");

     函数的实参和形参

    1 # -*- coding:utf-8 -*-
    2 def summing(a,b,c):    形参
        """求三个数和"""
    3 sum=a+b+c 4 print(sum) 5 num1=int(input("请输入第一个数:")) 6 num2=int(input("请输入第二个数:")) 7 num3=int(input("请输入第三个数:")) 8 summing(num1,num2,num3) 实参

     在函数summing()的定义中,变量a,b,c是一个形参——函数完成其工作所需的一项信息。在代码summing(num1,num2,num3) 中,num1,num2,num3是实参,实参是调用函数时传递给函数的信息。调用函数时,将要让函数使用的信息放在括号。在summing(num1,num2,num3)中,将实参num1,num2,num3传递给函数summing(),这个值被存储在形参中。

    传递实参:

    函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参的方式很多,可使用位置实参,这要求实参的顺序与形参的顺序相同,也可以使用关键字实参,其中每个实参都由变量名和值组成,还可以使用列表和字典。

    位置实参:

     1 # -*- coding:utf-8 -*-
     2 def summing(a,b,c):
     3     sum =a+b+c
     4     #print(sum)
     5     return sum
     6 def Mean_value(a1,b2,c3):
     7     averaging=summing(a1,b2,c3)
     8     averaging=averaging/3
     9     print("平均值%d"%averaging)
    10 num1 = int(input("请输入第一个数:"))
    11 num2=int(input("请输入第二个数:"))
    12 num3=int(input("请输入第三个数:"))
    13 #summing(num1,num2,num3)
    14 Mean_value(num1,num2,num3)

    在调用函数时,python必须将函数调用的每个实参都关联到函数定义中的一个形参,这种关联方法被称为位置实参。

    关键字实参:

    关键字实参是传递给函数的名称——值对。关键字实参让你无需考虑函数调用中实参顺序,还清楚地指出了函数调用中各个值得用途。

    1 # -*- coding:utf-8 -*-
    2 def describe_pet(animal_type,pet_name):
    3     print("
    I have a" + animal_type +".")
    4     print("My"+animal_type+"s name is "
    5           + pet_name.title()+".")
    6 describe_pet(pet_name="larry",animal_type="han " )

    输出结果:

    1 I have ahan .
    2 Myhan s name is Larry.

    默认值:

    编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,python将使用指定的实参值,否则,将使用形参的默认值。给形参指定默认值后,可在函数调用中相应的实参。使用默认值可简化函数调用,还可清楚地指出函数的典型用法。(位置实参必须写在关键字实参后面)

    返回值:

    return可以返回一个函数执行结果下方代码不会被执行

    如果return后面没有任何内容,表示会到调用函数的位置,并且不返还任何结果

    如果未在函数中指定return,那这个函数的返回值为None 
    1 # -*- coding:utf-8 -*-
    2 def get_formatte_name(first_name,last_name):
    3     """返回姓名"""
    4     full_name=first_name+""+last_name
    5     return full_name.title()
    6 musician=get_formatte_name("xie","cc")
    7 print(musician)
    函数可返回任何类型的值,包括列表和字典等较复杂的数据结构
    1 # -*- coding:utf-8 -*-
    2 def build_person(first_name,last_name):
    3     person={"name":first_name,"age":last_name}
    4     return  person
    5 musician=build_person("xie",12)  #返回字典
    6 print(musician)

    输出结果:

    1 {'name': 'xie', 'age': 12}     #返回字典
    1 # -*- coding:utf-8 -*-
    2 def build_person(first_name,last_name,name=""):
    3     person={"name":first_name,"age":last_name}
    4     if name:
    5         person["name"]=name
    6 
    7     return  person
    8 musician=build_person("xie",12,name="cc")
    9 print(musician)

    输出结果:

    1 {'name': 'cc', 'age': 12}

     传递任意数量实参:

    1 # -*- coding:utf-8 -*-
    2 def make(*toppings):
    3     print(toppings)
    4 make("pepperoni","extra","mushroons")

    输出结果:

    1 ('pepperoni', 'extra', 'mushroons')

     传递任意数量关键字实参:

     1 # -*- codfing:utf-8 -*-
     2 def build_profile(first, last,**user_info):
     3     profile={}
     4     profile["first_name"] = first
     5     profile["last_name"] = last
     6     for key,value in user_info.items():
     7         profile[key]=value
     8     return  profile
     9 build_profile("albert","einstein",princeton="location=",field="physics")
    10 print((build_profile))

    全局变量:

     1 # -*- coding:utf-8 -*-
     2 a=100
     3 def variables():
     4     print(a)
     5 
     6 def variables1():
     7     print(a)
     8 
     9 variables()
    10 variables1()

    局部变量:

     1 # -*- coding:utf-8 -*-
     2 a=200  #全局变量
     3 def variables():
     4 
     5     a = 100  #局部变量,只作用该函数里面
     6     print(a)
     7 
     8 
     9 def variables1():
    10     print(a)
    11 
    12 
    13 variables()
    14 variables1()
    global:
     1 # -*- coding:utf-8 -*-
     2 a=200
     3 c=100#全局变量
     4 def variables():
     5     global a   #使用global用来对一个全局变量的声明,对全局变量进行修改
     6     a = 400 #局部变量,只作用该函数里面,当加global,对全局变量进行修改。
     7     print(a)
     8     print(c)
     9 def variables1():
    10     a=50     #局部变量,只作用该函数里面
    11     print(a)
    12 
    13 def variables2():
    14     print(a)
    15 
    16 variables()
    17 variables1()
    18 variables2()
    匿名函数:
    lambda 参数:式子

     
     

     

  • 相关阅读:
    ceil函数 floor函数 floor函数 round函数 取整函数
    Havel–Hakimi algorithm(判断度数序列是否可图)
    最小费用最大流
    数论 (大数,小费马定理,欧拉定理,威尔逊定理,快速数论变换(NNT)模版)
    Give Candies(费马小定理)
    Yet Another Crosses Problem
    并查集
    杭电多校第一场-M-Code
    2018ICPC赛后总结
    营业额统计
  • 原文地址:https://www.cnblogs.com/zqxqx/p/8082969.html
Copyright © 2020-2023  润新知