`
onlynima
  • 浏览: 5298 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

从零开始学Python

 
阅读更多

第五章:函数

1.创建函数

  def hello(name):

return hello,+name

2.记录函数

  def hello(name):  this is hello function

return hello,+name

>>hello.__doc__

输出:  this is hello function

3.参数

  def hello(name):

    name=zq

return hello,+name

 >>x=zqq

 >>hello(x)

 >>输出xzqq

函数不能改变外部的值,因为函数的参数作用域是局部的,但是想要改变外部的值的时候怎么办?可以将外部的值放到列表中,这样函数中的变量和外部的列表是同一个引用,就可实现,相反如果不想改变列表的值就应该对原列表复制,然后再进行操作。

4.关键字参数和默认值

def hello1(name,talk):

return talk+,+name

 

可以在调用函数的时候提供参数的名字:

   hello1(name=zq,talk=hello)

输出:hello,zq

有些函数带默认值的:

def hello2(talk,name=zq):

return talk+,+name

此时,调用函数的时候可以用或者不用提供关键字参数

   hello2(talk=hello,)

 输出:hello,zq

如果想改变name的值,就给name赋值就可.

5.收集参数

  def pri(*paras):

print(paras)

在参数前面加了一个星号,最后会将结果用元组打印出来,收集剩余位置的所有参数(没有等号的),如果没有参数,则是一个空元组。

  def pri(**paras):

print(paras)

在参数前面加了两个星号,最后会将结果用字典的形式打印出来,实际上也是收集剩余位置的关键字参数(如:x=1带有等号的,不带等号的用*),如果没有关键字参数,则为空字典

6.反转过程

   def add(x,y):

return x+y

>>add(*(1,2))

输出:3

在调用方法的时候,在元组的前面加上星号,将元组转换为参数,与上例相反

   def add(x,y):

return x+y

   p={a:1,b:1}

>>add(**p)

输出:2

7.全局变量

  访问全局变量的值:globals[变量名]

  访问全局变量的字典:vars

  声明全局变量:global

   x=1

   y=1

   def chan(x):

     global x

 x+=1

 return globals()[y]+x

输出:3

8.函数中的函数

  def no1():

x=1

def no2():

 nonlocal x

 x+=1

return no2

 注意其中的nonlocal可以访问外部作用域,但不是全局作用域。调用no2()的时候x的值就会加1

9.递归

 简单来说就是在函数中自己调用自己,但是要注意无限循环

 def func():

   func()

上面就是递归,但是是一个无限循环的递归

<!--EndFragment-->
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics