不使用函数的情况下只能遵循面向过程的编程,即,根据业务逻辑从上到下实现功能,往往重复的功能,使得代码出现重复。

 #最简单的函数调用
#由于python遵循从上到下读入内存的规律,所以函数要放到调用的前面
def s1():
print('hello world')
s1()
#显示:hello world
#函数的参数传入
def s1(name):
print('my name is %s'%name) s1('liguangxu')
#显示:my name is liguangxu
#函数的多参数调用(实参与形参相对应)
def s1(name,age,what):
print('my name is %s,age is %s, is %s'%(name,age,what))
s1('liguangxu',23,'good man')
#显示:my name is liguangxu,age is 23, is good man
#函数的不同位置实参的传入(需要给实参指定对应形参)
def s1(name,age,what):
print('my name is %s,age is %s, is %s'%(name,age,what)) s1(age=18,what='good man',name='liguangxu')
#显示:my name is liguangxu,age is 18, is good man
#函数形参的默认值(含有默认值的形参必须放在最后)
def s1(name,age,what='good man'):
print('my name is %s,age is %s, is %s'%(name,age,what)) s1(age=18,name='liguangxu')
#显示:my name is liguangxu,age is 18, is good man s1(age=18,what='bad man',name='liguangxu')
#显示:s1(age=18,what='bad man',name='liguangxu')
#函数的动态参数,会将实参放入元组中
def test(*args):
print(args,type(args)) test('')
#显示('123',) <class 'tuple'> #函数的动态参数,传入的实参为一组元素,将li整个列表放入元组中
def test(*args):
print(args,type(args)) li=[11,22,33,45]
test(li)
#显示([11, 22, 33, 45],) <class 'tuple'> #传入带一个*的列表,将li列表中的每个元素放到元组中
def test(*args):
print(args,type(args)) li=[11,22,33,45]
test(*li)
#显示:(11, 22, 33, 45) <class 'tuple'>
test(*'alex')
#显示:('a', 'l', 'e', 'x') <class 'tuple'>
#总结:实参前加个‘*’相当于加了个for循环遍历实参的每个元素,并一一放入元组中
#动态参数形参含两个*,将键值对传入,并保存成字典的形式
def f2(**kwargs):
print(kwargs) f2(n1='alex',n2=18)
#显示:{'n1': 'alex', 'n2': 18} dic={'k1':'v1','k2':'v2'}
f2(kk=dic)#{'kk': {'k1': 'v1', 'k2': 'v2'}}
#显示{'kk': {'k1': 'v1', 'k2': 'v2'}} #万能参数
def f1(*args,**kwargs):
print(args)
print(kwargs)
f1(11,22,33,44,55,k1='aa',k2='bb')
#运行结果(11, 22, 33, 44, 55)
{'k1': 'aa', 'k2': 'bb'}
#formate传参方式
#方式1
s1='i am {0},age{1}'.format('alex',18)
print(s1)
#显示:i am alex,age18 #方式2
s2='i am {0},age{1}'.format(*['alex',18])#传列表
print(s2)
#显示i am alex,age18 #方式3
s1='i am {name}, age{age}'.format(name='alex',age=18)#字符串中name与age后面一定要加上name=‘’,age=进行指定
print(s1)
#显示:i am alex, age18 #方式4
dic={'name':'alex','age':18}
s2='i am {name},age{age}'.format(**dic)#传字典要加**
print(s2)
#显示:i am alex,age18
#传过来的形参可使用方法不能重新赋值 ,建议全局变量名需大写
#传的是引用 不是复制
def f5(a1):
a1.append('')
li=[11,22,33,44]
f5(li)
#显示:[11, 22, 33, 44, '123']
 #全局变量,所有的作用域,都可读,对全局变量进行【重新赋值】,需要加上global,特殊:列表,字典,可修改,不可重新赋值
def f1():
global name#表示name为全局变量
name=''
print(name) name=''
f1()
#显示:123

python-day3-之函数的更多相关文章

  1. 跟着ALEX 学python day3集合 文件操作 函数和函数式编程 内置函数

    声明 : 文档内容学习于 http://www.cnblogs.com/xiaozhiqi/  一. 集合 集合是一个无序的,不重复的数据组合,主要作用如下 1.去重 把一个列表变成集合 ,就自动去重 ...

  2. day3之函数的初始及进阶

    函数初始 函数的定义与调用 ''' def 函数名 (参数): 函数体 函数名:设定与变量相同 执行函数: 函数名() ''' 函数的返回值 # 函数返回值 return ''' 1.遇到return ...

  3. Python 动态创建函数【转】

    知乎上也有相似的问题 偶然碰到一个问题,初想是通过动态创建Python函数的方式来解决,于是调研了动态创建Python函数的方法. 定义lambda函数 在Python中定义lambda函数的写法很简 ...

  4. python中的函数

    Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也 ...

  5. python高级之函数

    python高级之函数 本节内容 函数的介绍 函数的创建 函数参数及返回值 LEGB作用域 特殊函数 函数式编程 1.函数的介绍 为什么要有函数?因为在平时写代码时,如果没有函数的话,那么将会出现很多 ...

  6. python内置函数

    python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...

  7. Python基础三. 函数、lambda、filter、map、reduce

    一.概述 函数, 就是用一些语句组织起来实现一组特定的功能, 用来重复调用. 函数的作用及意义:最大化的重用代码和最小化的代码冗余以及对流程的分解. Python中有哪些函数: 内建的函数 第三方模块 ...

  8. Python 常用string函数

    Python 常用string函数 字符串中字符大小写的变换 1. str.lower()   //小写>>> 'SkatE'.lower()'skate' 2. str.upper ...

  9. python 内置函数和函数装饰器

    python内置函数 1.数学相关 abs(x) 取x绝对值 divmode(x,y) 取x除以y的商和余数,常用做分页,返回商和余数组成一个元组 pow(x,y[,z]) 取x的y次方 ,等同于x ...

  10. Python 之匿名函数和偏函数

    匿名函数与偏函数 匿名函数 Python允许使用lambda关键字创造匿名函数,lambda表达式用于定义匿名函数,它返回可调用的函数对象,语法如下: lambda arg1, arg2, … : e ...

随机推荐

  1. newsyslog.conf详解

    newsyslog.conf 指出了哪个日志文件要被管理,要保留多少和它们什么时候被创建.日志文件可以在它们达到一定大小或者在特定的日期被重新整理.# configuration file for n ...

  2. vue系列(一)子组件和父组件

    父组件传递数据到子组件props 父组件 <template> <div class="main"> <div class="top&quo ...

  3. Windows Profile的一些问题

    电脑症状:桌面复制的文件重启后消失:新安装的软件重启后也自动消失.排查:使用autoruns观察,发现安装了麦咖啡和360两套“安全”软件,除此外并无异常,任务管理器內也无异常发现.过程:1.保险起见 ...

  4. UVA1363 - Joseph's Problem(数学,迷之优化)

    题意:给出n和k,1≤n,k≤1e9,计算 切入点是k/i 和 k/(i+1)差距不大.令pi = k/i, ri = k%i.如果pi+1 == pi,那么ri+1 == k - pi(i+1) = ...

  5. UVALive 3530 Martian Mining(贪心,dp)

    分析: 对于网格grid[i][j]如果放向上的管道,那么grid[i][k], k>j 就只能放向上的管道了. 那么定义dp[i][j]表示第i行,最后一个放向左的管道是j的最大总矿量. j ...

  6. OO第四单元总结

    单元架构设计 本单元OO作业主要涉及两个过程,即先根据输入的elements数组建立UML存储模型,而后基于这个模型实现一系列查询判断功能.汲取上单元的经验,建模过程中模型数据容器的选择依据要求实现的 ...

  7. 【SAM manacher 倍增】bzoj3676: [Apio2014]回文串

    做法一:PAM:做法二:SAM+manacher.前缀树上倍增 Description 考虑一个只包含小写拉丁字母的字符串s.我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度.请你 ...

  8. sendmail安装与配置

    一.安装sendmail与mail 1.安装sendmail:  1) centos下可以安装命令:yum -y install sendmail 2) 安装完后启动sendmail命令:servic ...

  9. XPATH如何选择,t选取,包含某一属性的节点, 不包含某一个属性的节点?

    https://blog.csdn.net/manmanpa/article/details/56282741 //tbody/tr[@class] 包含 //tbody/tr[not(@class) ...

  10. LeetCode946-验证栈序列

    问题:验证栈序列 给定 pushed 和 popped 两个序列,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true:否则,返回 false . 示例 ...