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)
"""
函数参数的使用
在函数名后面的小括号内填写 参数
多个参数之间使用 , 分隔
"""
# 定义函数时的变量,叫形参 形参可以任意起名字
def sum_2_sum(num1,num2):
"""
: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
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
def fun():
global a # 声明a为全局变量
a = 5
print 'inside:',id(a)
fun()
print a
print id(a)
########函数的返回值########
"""
返回值:函数运算的结果,还需要进一步操作时,给一个返回值
return用来返回函数执行结果的,如果没有返回值,默认为None
python可以间接返回多个值(返回了一个元组)
一旦遇到return,函数执行结束,后面的代码不会执行
"""
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
print 'a变量保存数据的内存地址是%d' %id(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
li = []
for i in range(1, 8):
li.append(i ** 2)
print li
[experssion for i in 序列 if...]
"""
##########字典生成式#########
1.假设有20个学生,学分在60~100之间,筛选出成绩在90分以上的学生
import random
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
print {name:score for name,score in stuInfo.items() if score >90}
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()}
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 '欢迎...'
def logout():
print 'logout....'
def savemoney():
print '存钱...'
def transferMoney():
print '转账....'
logout()
savemoney()
transferMoney()
python 函数调用的更多相关文章
- python 函数调用顺序
def foo(): print ('in the foo') bar() def bar(): print ('in the bar') foo() 1.foo函数进入内存 2.bar函数进入内存 ...
- python函数调用时参数传递方式
python函数调用时参数传递方式 C/C++参数传递方式 对于C程序员来说,我们都知道C在函数调用时,采用的是值传递,即形参和实参分配不同的内存地址,在调用时将实参的值传给实参,在这种情况下,在函数 ...
- Python 函数调用&定义函数&函数参数
一.函数调用 在python中内置了很多函数,我们可以直接调用 .想要调用函数首先要知道函数的名称及包含的参数,还可以通过查看python官方的文档:https://docs.python.org/3 ...
- python函数调用关系图(python call graph)
由于要重构项目的部分代码,要整理好主要的函数调用关系,不想自己看代码慢慢画出结构,想找出一种通用的,节省人力的方法得出函数间的调用关系图,于是发现以下几个工具.(内网没装好graphviz,还没真正用 ...
- python函数调用顺序、高阶函数、嵌套函数、闭包详解
一:函数调用顺序:其他高级语言类似,Python 不允许在函数未声明之前,对其进行引用或者调用错误示范: def foo(): print 'in the foo' bar() foo() 报错: i ...
- Python 函数调用性能记录
之前用 JS 写项目的时候,项目组用的组件模式,一直感觉很不错.最近用 Python 做新项目,项目结构也延续了组件模式.一直没有对函数调用的性能作了解,今天突发奇想测试了一下,写了一些测试代码 首先 ...
- python函数调用之自我调用与C++比较
C++下的函数自我自我调用 第一种方法 #include <iostream> using namespace std; int rel_do(){ int a; cout<< ...
- Python函数调用中的值传递和引用传递问题
这一问题O' Reilly出版的"Learning Python" 2nd Edition的 13.4 节有专门论述,对于不可变(immutabe)对象,函数参数(这里是x和y)只 ...
- python函数调用的四种方式 --基础重点
第一种:参数按顺序从第一个参数往后排#标准调用 # -*- coding: UTF-8 -*- def normal_invoke(x, y): print "--normal_invoke ...
随机推荐
- 指定jdk编译或运行
set JAVA_HOME=D:\java\jdk8 set CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOMe%\lib\tools.jar; set Pat ...
- Codeforces 56D Changing a String (DP)
题意:你可以对字符串s进行3种操作: 1,在pos位置插入字符ch. 2,删除pos位置的字符. 3,替换pos位置的字符为ch. 问最少需要多少次操作可以把字符s变成字符s1? 思路: 设dp[i] ...
- 2018网络预选赛 徐州G 线段树
线段树,假设求(x1,y1)点的贡献,就找所有比该点出现时间晚,且x坐标大于x1的点中y最大的,贡献就是Y-y1,由于题目条件限制,不可能有x坐标大于(x1,y1)且y坐标大于y1的点,所以贡献肯定为 ...
- Express响应方法
下表中响应对象(res)的方法向客户端返回响应,终结请求响应的循环.如果在路由句柄中一个方法也不调用,来自客户端的请求会一直挂起. 方法 描述 res.download() 提示下载文件. res.e ...
- OpenNi安装示例
1.下载OpenNi https://structure.io/openni 解压,点击运行 选择安装目录,默认即可 安装过程中有弹框,选择 安装 点击 完成 在相应的安装目录下即可找到
- 7-n!末尾有几个0
如何确定一个N!末尾有多少个零 转载 2015年08月30日 15:02:49 622 题目:1*2*3*……*100 求结果末尾有多少个零 分析:一般类似的题目都会蕴含某种规律或简便方法的,阶乘末尾 ...
- php学习笔记-获取表单数据
在网页上经常要填写用户名和密码,点击确认按纽之后,用户名和密码经过前端处理之后发送到了服务器上,那么服务器端怎么获取到这些用户提交的数据呢?就是通过超级全局变量 _POST和_GET 先拿_POST做 ...
- 前端(HTML/CSS/JS)-JavaScript编码规范
1. 变量命名 (1)变量名不应以短巧为荣 左边的变量名都不太清楚,代码的扩展性不好,一旦代码需要加功能的话,就容易出现obj1.obj2.obj3这种很抽象的命名方式.所以一开始就要把变量的名字起得 ...
- 关于集合的小demo
/*1.分析以下需求,并用代码实现: (1)有如下代码: (2)定义方法统计集合中指定元素出现的次数,如"e" 3,"f" 2,"g" 4* ...
- HDU 5033 Building (维护单调栈)
题目链接 题意:n个建筑物,Q条询问,问所在的位置,看到天空的角度是多少,每条询问的位置左右必定是有建筑物的. 思路 : 维护一个单调栈,将所有的建筑物和所有的人都放到一起开始算就行,每加入一个人,就 ...