python函数

什么是函数

      函数其实是一把工具

使用函数的好处:

      1.解决代码冗余问题。

      2.使代码的结构更清晰

      3.容易管理

函数的使用必须遵循:先定义,后调用

函数定义语法:

        def  函数名(参数1,参数2....):

                    '''注释:声明函数'''

                       逻辑代码

                      return 返回值

        def:defind 定义。

         函数名:必须看其名知其意。

         ():接受外部传入的参数

         注释:用来声明函数的作用。

         return :返回给调用者的值

定义函数的三种形式:

              1.无参函数

                         不需要接受外部传入的参数。

               2.有参函数

                          需要接受外部传入的参数。

               3.空函数

                   pass

1.无参函数

    def login():

              user=input('请输入用户名').strip()

               pwd=input('请输入密码').strip()

               if user=='tank' and pwd=='123':

                        print('login successful!')

               else:

                         print('login error!')

#函数的内存地址

print(login)

#函数调用

login()

2.有参函数

#username,password用来接受外部传入的值

   def  login(username,password):

        user=input('请输入用户名').strip()

         pwd=input('请输入密码').strip()

         if  user==username  and  pwd==password:

                print('login successful!')

          else:

                 print('login error!')

#若函数在定义时需要接受参数,调用者必须为其传参

login('tank','123')

3.空函数

 def login():

        #代表什么都不做

        pass

参数的参数:

#在定义阶段:x,y称之为形参

 def  func(x,y):

          print(x,y)

#在调用阶段:10,100称之为实参

func(10,100)

位置参数:

            位置形参

            位置实参

            必须按照位置--传参

#在定义阶段:位置形参

def func(x,y):      

        print(x,y)

#在调用阶段:10,100称位置实参

func(10,100)

 

关键字参数:

          关键字实参

           按照关键字传参

#位置形参x,y

def  func(x,y):

        print(x,y)

#在调用阶段:x=10,y=100称为关键字参数

func(y=111,x=10)  

#不能少传

#func(y=111)#报错

#不能多传

默认参数

           在定义阶段,为参数设置默认值

 def foo(x=10,y=20):

         print(x,y)

#不传参,则使用默认参数

foo()

#传参,使用传入的参数

foo(200,300)

函数的嵌套定义:

          在函数内部定义函数

函数对象:

 函数的内存地址称之为函数对象

函数的名称空间:

      内置:

             python解析器自带的都称之为“内置名称空间”。

      全局:

              所有顶着头写的变量,函数...都称之为“全名称空间”。

      局部:

              在函数内部定义的,都称为“局部名称空间”

名称空间加载顺序:
            内置->全局名称空间->局部名称空间
名称空间查找顺序:
             局部名称空间->全局名称空间->内置

#函数的嵌套定义
def func1():
    print('from func1...')
    def func2():
        print('from func2...')

#函数对象
print(func1)
def f1():
    pass
def f2():
    pass
dic1={'1':f1,'2':f2}
choice=input('请选择功能编号:')
if choice=='1':
    print(dic1[choice])
    dic1[choice]()

elif choice=='2':
    print(dic1[choice])
    dic1[choice]()

x=10
#名称空间
#函数的嵌套定义
def func1():
    #x=20
    print('from func1...')
    print(x)   #报错 代码时自上由下执行,print(x)无法引用x=30,所以报错
    x=30 
    def func2():
        print('from func2...')
func1()

 

 

 

posted @ 2019-06-25 21:40  ch_musk  阅读(183)  评论(0编辑  收藏  举报