首页 > 编程语言 > 详细

Python基础第六天

时间:2017-02-24 10:53:12      阅读:151      评论:0      收藏:0      [点我收藏+]

---恢复内容开始---

函数

一:函数定义

 

def test():
    x=3
    y=2*x+1
    return y
a=test( )   #运行test,并将结果放在a中。
print(a)

 

def:定义函数的关键字

test:函数名

():内可定义形参

return:定义返回值

二:函数的返回值

      当一个函数/过程没有使用return显示的定义返回值时,python解释器会隐式的返回None,

       返回值=1,返回object

       返回值>1,返回tuple

def test01():
      msg=hello The little green frog
      print(msg)

def test02():
     msg=hello WuDaLang
     print(msg)
     return msg

t1=test01()
t2=test02()

print(t1)
print(t2)

hello The little green frog
hello WuDaLang
None
hello WuDaLang

三:函数参数:位置参数   关键字参数  默认参数

def calc(x,y):
     res = x**y
     return res
 c = calc(2,3)
 print(c)         #关键字参数




def test(x,y,z):
     print(x)
     print(y)
     print(z)
 test(y=1,x=3,z=4)     #位置参数
位置参数,必须一一对应,缺一行不行多一行也不行
关键字参数,无序一一对应,缺一行不行多一行也不行
test(1,y=2,3)报错
test(1,3,y=2)报错
test(1,3,z=2,y=4)报错
位置参数必须在关键字参数左边

参数组:**字典 *列表
#*args 处理的是位置参数,处理成列表
def test(x,*args):#*args   以元祖传给args
    print(x)
    print(args)
# test(1,2,3,4,5)
# test(‘alex‘,{‘name‘:‘alex‘})
test(1,*[x,y,z])
test(1,*(x,y,z))

#**kwargs 处理的是关键字参数
def test(x,**kwargs):
    print(x)
    print(kwargs)
test(1,y=2,z=3)

def test(x,*args,**kwargs):
    print(x)
    print(args)
    print(kwargs)
test(1,y=2,z=3)

四:局部变量和全局变量

      在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。

当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

 

name = lhf
def change_name():
    name = 随后绝对是
    print(change_name, name)
change_name()

#如果函数的内容无global关键字,优先读取局部变量,可以全局变量,无法对全局变量重新赋值,但是对于变量是可变类型,可以对内部元素进行操作。
#如果函数中有global关键字,变量本质就是全局变量,可读取可赋值。
########全局变量变量名大写,局部变量变量名小写
有关函数的内容有无global关键字--有无声明局部变量例子:
技术分享
#函数的内容无global关键字----有声明局部变量
NAME =[gh,hj]
def ghjhjk():
    NAME =TY
    print(i am,NAME)
ghjhjk()
#函数的内容无global关键字----无声明局部变量
NAME =[gh,hj]
def ghjhjk():
    NAME.append(rtyu)
    print(i am,NAME)
ghjhjk()
#函数的内容有global关键字
NAME =[gh,hj]
def ghjhjk():
    global NAME
    NAME =[内牛满面]
    print(i am,NAME)
ghjhjk()

NAME =海风
def huangwei():
    name = 黄伟
    print(name)
    def liuyang():
        name =刘洋
        print(name)
        def nulige():
            name = 胡志华
            print(name)
        print(name)
        nulige()
    liuyang()
    print(name)
huangwei()

name = 刚娘
def weihou():
    name = 陈卓
    def weiweihou():
        global name
        name = 冷静
    weiweihou()
    print(name)

print(name)
weihou()
print(name)

name = 刚娘

def weihou():
    name = 陈卓
    def weiweihou():
        nonlocal name
        name = 冷静
    weiweihou()
    print(name)

print(name)
weihou()
print(name)
View Code

五:函数递归

   在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

  递归特性:

1. 必须有一个明确的结束条件  return

2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

3. 递归效率不高

技术分享
import time

person_list=[alex,wupeiqi,yuanhao,linhaifeng]
def ask_way(person_list):
    print(-*60)
    if len(person_list) == 0:
        return 没人知道
    person=person_list.pop(0)
    if person == linhaifeng:
        return %s说:我知道,老男孩就在沙河汇德商厦,下地铁就是 %person
    print(hi 美男[%s],敢问路在何方 %person)
    print(%s回答道:我不知道,但念你慧眼识猪,你等着,我帮你问问%s... %(person,person_list))
    time.sleep(3)
    res=ask_way(person_list)
    # print(‘%s问的结果是: %res‘ %(person,res))
    return res
res=ask_way(person_list)
print(res)

def calc(n):
    print(n)
    if int(n/2) ==0:
        return  n
    return calc(int(n/2))
calc(10)

ls =[]

def test(n):
    n =int(n/2)
    ls.append(n)
    if int(n/2) ==1:
        return  ls
    test(n)

print(test(5))
View Code

六:作用域

 

def test1():  #函数名相当于内存地址,加括号test()相当于运行
    print(in the test1)  #没有返回值时,返回None
def test():
    print(in the test)
    return  test1
res=test()
print(res())


in the test
in the test1
None

 

技术分享
# 例一:
name=alex

def foo():
    name=lhf
    def bar():
        print(name)
    return bar

func=foo()  #执行foo 将结果“返回bar”给func
func()   #执行func即执行bar

# 例二:
name=alex

def foo():
    name=lhf
    def bar():
        name=wupeiqi
        def tt():
            print(name)
        return tt
    return bar

func=foo()
func()() #运行tt
两个好例子

七:匿名函数

#这段代码
def calc(n):
    return n**n
print(calc(10))
 
#换成匿名函数
calc = lambda n:n**n
print(calc(10))

lambda 匿名函数(形参名):函数表达式(处理逻辑){ps:一般为return返回最终结果}

 

 

name=alex
def change_name(x):
    return name+_sb
res=change_name(name)
print(res)

f=lambda x:x+_sb
res=f(name)
print(匿名函数的运行结果,res)

 

 下一集:函数式编程。。。

 

Python基础第六天

原文:http://www.cnblogs.com/xyd134/p/6437372.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!