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

 #最简单的函数调用
#由于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. java 多线程的经验总结

    什么是线程? 线程是操作系统所能运算调度的最小单元,包含于进程之中,作为进程的实际运作单位:线程与进程的区别,线程是进程的子集,一个进程可以有多个线程,每个线程并行执行不同的任务,不同的进程使用不同的 ...

  2. IOS 核心动画(Core Animation)

    Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它 能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代码就 可以实现非常强大的功能. Core ...

  3. IOS - (id)initWithStyle... 方法的使用

    // 该方法只有在通过代码创建控件的时候才会调用, 如果控件是通过xib或者storyboard创建出来的不会调用该方法- (id)initWithStyle:(UITableViewCellStyl ...

  4. 简析平衡树(二)——Treap

    前言 学完了替罪羊树,我决定再去学一学\(Treap\).一直听说\(Treap\)很难,我也花了挺久才学会. 简介 \(Treap\)这个名字真的挺有内涵: \(\color{red}{Tree}\ ...

  5. python脚本执行报错:SyntaxError: Non-ASCII character '\xe6' in file ip.py on line 4...

    报错信息 [root@chenbj ~]# python ip.py 192.168.1.1 File "ip.py", line 4 SyntaxError: Non-ASCII ...

  6. 初尝微信小程序2-Swiper组件、导航栏标题配置

    swiper 滑块视图容器. 很多网页的首页都会有一个滚动的图片模块,比如天猫超市首页,滚动着很多优惠活动的图片,用来介绍优惠内容,以及供用户点击快速跳转到相应页面. Swiper不仅可以滚动图片,也 ...

  7. SQL Server中通用数据库角色权限的处理详解

    SQL Server中通用数据库角色权限的处理详解 前言 安全性是所有数据库管理系统的一个重要特征.理解安全性问题是理解数据库管理系统安全性机制的前提. 最近和同事在做数据库权限清理的事情,主要是删除 ...

  8. MySQL派生表(derived)优化一例

    1.什么是派生表derived 关键字:子查询–>在From后where前的子查询 mysql; +----+-------------+------------+------+-------- ...

  9. jfinal excel表导出

    在自己的WEB项目中要用到导出Excel,所以结合网络上的资源写了一个自己的export 工具类. 说明: JFinal 环境 WEB项目 JAVA后台生成非JS插件 好了,直接撸代码 1.设置文件保 ...

  10. servlet层调用biz业务层出现浏览器 500错误,解决方法 dao数据访问层 数据库Util工具类都可能出错 通过新建一个测试类复制代码逐步测试查找出最终出错原因

    package com.swift.jztk.servlet; import java.io.IOException; import javax.servlet.ServletException; i ...