函数啊函数

函数啊函数

 

先上个经济学小常识!

其实这个问题之前我就遇到过,并且花了半年多的时间才想清楚。举个简单的例子,一个公司,到底是买现成的设备和软件还是高薪雇个人自己来做呢?经济学给这类非常蛋疼的问题起了个专有名词——企业边界。经济学解释:交易成本和管理成本的比较确定了企业的边界,交易成本越低,越要外部化,管理成本越高,越要内部化。未来的企业,一定越来越小,越来越专。改成上面的例子,其实就是看公司业务了,如果严重依赖网络的,都外包出去,我操,完全控制不住啊!管理成本无限大啊!还是自己招人吧。但网络如果是非主营业务,那就没必要了。恩,就是这个意思。

 

函数有什么卵用

函数的三大优点
1、代码重用
2、保持一致性
3、可扩展

 

函数的返回值

为什么要有返回值,因为想要函数执行的结果,后面的函数需要
def test1():
    print('in the test1')
    return 0

test1()

返回值都能返回什么?

def test3():
    print('in the test3')
    return 1,'hello',['alex','wupq'],{'name':'alex'}

test3()     #可以返回任何值,本质还是只返回一个值

 

函数的参数及调用
def test(x,y):      #x,y为形参,如果不调用,x,y永远不会占内容
    print(x)
    print(y)

test(1,2)           #1,2为实参,形参和实参一一对应
test(y=2,x=1)       #关键字调用,与形参位置无关,
test(2,y=1)         #注意!关键参数要在位置参数之后

函数的非固定参数

def test(x,y=2):      #特点:调用函数的时候,默认参数非必传
    print(x)            #用途:1、默认安装值 2、链接数据库端口号
    print(y)

test(1,3)

怎么一下放多个参数

def test(*args):
    print(args)

test(1,3,3,34,5)


#接受n个位置参数,转成元祖的方式
def test(*args):      #放多个参数,里面放元祖。args为默认用法,也可以是别的参数
    print(args)

test(1,3,3,34,5)
test(*[1,3,3,34,5])     #另一种传参方式
#把n个关键字参数,转成字典的方式
def test(**kwargs):
    print(kwargs)

test(name='alex',age='8',sex='F')       #注意,这里传的key值
test(**{'name':'alex','age':'8','sex':'F'})         #另一种传参方式
#混合使用

def test(name,age=18,*args,**kwargs):
    print(name)
    print(age)
    print(args)         #打印为空
    print(kwargs)       #打印字典

test('alex',4,sex='F',hohhy='tesla')            #正常人
test('alex',sex='F',hohhy='tesla',age=3)          #关键字参数age可以在最后

 

作用域、局部与全局变量        能用,但不要用!不要用!不要用!

在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用

login_status = False        #定义全局变量

def auth(username,password):
    #get data from db
    _username = "alex"
    _password = "123"
    if username == _username and password == _password:
        print("passed authentication!")
        global login_status     #引用全局变量
        login_status = True
        print(login_status)

username = input("username:")
password = input("password:")
auth(username,password)

 
















posted @ 2016-10-31 23:24  crazy_6  阅读(278)  评论(0编辑  收藏  举报