python函数间调用_python 函数调用

##########定义函数########

# 如果不主动调用函数,函数是不会执行的

def say_hello():

print 'hello1'

print 'hello2'

print 'hello3'

# 函数的调用

say_hello()

def sum_2_sum():

"""对两个数字的求和"""

num1 = 20

num2 = 20

result = num1 + num2

print '%d + %d = %d' %(num1,num2,result)

sum_2_sum()

"""

函数参数的使用

在函数名后面的小括号内填写 参数

多个参数之间使用 , 分隔

"""

# 定义函数时的变量,叫形参 形参可以任意起名字

def sum_2_sum(num1,num2):

"""

:param num1:

:param num2:

:return:

"""

result = num1 + num2

print '%d + %d = %d' %(num1,num2,result)

# 在调用函数的时候

# 在调用函数时传递得参数称为实参(真实的数据信息)

sum_2_sum(5,20)

########函数形参之四大参数###########

参数:形参 实参

形参:位置参数 默认参数 可变参数 关键字参数

位置参数:形参和实参个数必须保持一致

def getInfo(name,age):

print name,age

getInfo(age=12,name='westos')

默认参数:形参和实参的个数可以不一致

def mypow(x,y=2):

"""

求x的y次方,y的值默认为2

:param x:

:param y:

:return:

"""

print x**y

mypow(4)

默认形参可以改变

mypow(4,3)

可变参数

def mysum(*agrs):

"""

*args:是可变参数

args:是元组类型数据

args:名字可变(因为是形参 名字可变)

:param agrs:

:return:

"""

print agrs

sum = 0

for item in agrs:

sum += item

print sum

对list tuple set 解包时,只需要在变量前加 *

nums = [1,2,3,4,66,78]

nums1 =(1,2,3,4,5)

nums2 = {1,2,3}

*nums:解包

mysum(*nums2)

#mysum(1,2,3,4,5)

关键字参数

def getStuInfo(name,age,**kwargs):

"""

**kwargs:是一个字典;可以传递任意多的key-value对

:param name:

:param age:

:param kwargs:

:return:

"""

print name,age

print kwargs

getStuInfo('westos',18,hobbies=['code','running'],gender ='female')

########函数变量的作用域###########

局部变量:在函数内部定义的普通变量,只在函数内部作用,函数执行结束

变量会自动删除

a = 1

print 'outside:',id(a)

def fun():

global a # 声明a为全局变量

a = 5

print 'inside:',id(a)

fun()

print a

print id(a)

########函数的返回值########

"""

返回值:函数运算的结果,还需要进一步操作时,给一个返回值

return用来返回函数执行结果的,如果没有返回值,默认为None

python可以间接返回多个值(返回了一个元组)

一旦遇到return,函数执行结束,后面的代码不会执行

"""

def mypow(x, y=2):

return x ** y, x + y

print 'hello'

# pass

对元组进行解包

a,b = mypow(3)

print a,b

#######引用#######

def test(num):

print '在函数内部%d对应的内存地址是%d' %(num,id(num))

result = 'hello'

print '函数要返回的数据的内存地址是 %d' %id(result)

return result

a = 10

print 'a变量保存数据的内存地址是%d' %id(a)

r = test(a)

print '%s 的内存地址是 %d' %(r,id(r))

########列表生成式#######

1.

s = '51 5000 10000'

li = [ ]

for item in s.split():

li.append(int(item))

k,a,b = li

k, a, b = [int(item) for item in s.split()]

print k,a,b

2.生成一个列表,列表元素分别为[1**2,2**2,3**2,4**2...n**2]

li = []

for i in range(1, 8):

li.append(i ** 2)

print li

print [i ** 2 for i in range(1, 8)]

"""

[experssion for i in 序列 if...]

"""

print [i ** 2 for i in range(1, 8) if i % 2 == 0]

##########字典生成式#########

1.假设有20个学生,学分在60~100之间,筛选出成绩在90分以上的学生

import random

stuInfo = {}

for i in range(20):

name = 'westos' + str(i)

score = random.randint(60,100)

stuInfo[name] = score

# stuInfo['westos'+str(i)] = random.randint(60,100)

hightscore = {}

for name,score in stuInfo.items():

if score > 90:

hightscore[name] = score

print hightscore

stuInfo = {'westos'+ str(i):random.randint(60,100) for i in range(20)}

print {name:score for name,score in stuInfo.items() if score >90}

2.将字典中的key值和value值调换

d = {'a':'apple','b':'bob','c':'cat'}

#  print {v:k for k,v in d.items()}

print {k:k.upper()for k,v in d.items()}

# 3.大小写合并,key值最终全部为小写

d1 = {'A':10,'b':3,'a':5,'B':8,'d':1}

print {k.lower():d1.get(k.upper(),0)+d1.get(k.lower(),0)for k,v in d1.items

###########函数装饰器######

"在不改变原函数的基础上,给函数增加功能"

把一个函数当作参数,返回一个替代版的函数

本质上:返回函数的函数

def desc(fun):

def add_info():

print '快乐'

fun()

print '欢迎'

return add_info

# 语法糖

@desc

def login():

# print '快乐...'

print 'login....'

# print '欢迎...'

@desc # login = desc(login)

def logout():

print 'logout....'

@desc

def savemoney():

print '存钱...'

@desc

def transferMoney():

print '转账....'

# def ..

login()

logout()

savemoney()

transferMoney()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值