Python 基础函数
函数:
在程序设计中,函数是指用于进行某种计算的一系列语句的有名称的组合。
定义一个函数时,需要指定函数的名称并写下一系列程序语句。定义时不会执行,运行代码时,先加载进内存中,之后使用名称来调用这个函数。
定义一个函数会创建一个函数对象,其类型为"function",要调用它才会执行。
(一).函数的命名规则
与变量一样,参考官方推荐的命名格式:function_name。小写+下划线
(二).形参与实参
形参:定义函数时,设置的参数名字。没有实际意义的,只是个名字。
实参:调用参数时,设置的具体内容。有实际的意义,是具体存在的。
一、函数参数类型
(一).没有参数:跳过 2333
(二).必备参数:调用时,必须传参数。
(三).默认参数:调用时,参数可传可不传。不传参,就是默认值;传了参就覆盖。参数名要相同!值可以不一样。
(四).可选参数(分为两种):
(1).不定长参数:
语法:fun(*args) 星号"*"必须要有,是关键字。args是变量名,一般写成*args(约定成俗),随便传什么都可以。
传参时,任何元素都会被包装成元组。
调用时:fun(*[1,2]) 加个*,就是把里面的壳去掉了,解包 -> (1,2)
例外:fun(*{1,2}) -> {1,} 字典的话,只剩键了。
(2).关键字参数:
fun(**kwargs) 例:fun(a=1, b=2) -> {"a":1, "b":2}。包装成字典。要遵循变量命名的规则!
这种情况:fun(**{'a':1}) -> {'a':1} 关键字必须是字符类型,不然报错。
(五).紧接函数参数类型,来看4种参数混合传参:
关键字参数放最后;根据定义的顺序,确保必备参数有且只能拿到一个值;
混合传参时,记住一点:一定要按定义的顺序传参。定义函数时参数顺序怎么写的,调用时也按顺序写。不要出现重复变量名,会发生二义性,导致报错。(其实不怎么会遇到这么操蛋的4种混合传参,别纠结了,记住前面红色的字就行)
def four_params(b, m=20, *args, **kwargs):
print("必备参数的值:", b)
print("默认参数的值:", m)
print("不定长参数的值:", args)
print("关键字参数的值:", kwargs)
return "OK" g = four_params("quanquan616", 20, *(1, 2, 3), **{"aa": "a", "bb": "b", "cc": "c"})
print(g)
二、return语句
return语句可以放在函数体中的任何地方。return的东西才能被变量接收。
return语句的作用:
(1).返回这个函数结果。
(2).函数结束的标志。远行了return 就强制结合俗了这个函数。
def fun0():
print("quanquan616") fun0() # 调用函数,是函数实际的执行结果
fun0 # 传的是函数体的内存地址
案例:
def other_func(): # 函数的定义,不调用是不会执行的
print("other_func")
return 10 def my_func(): # 同理于上
print("my_func")
return other_func() print(my_func()) # 第一个被执行 """
运行结果: my_func
other_func
10
""" """
拆解步骤: 1. 解释器遇到my_func()这条代码,去执行my_func这个函数,先打印出 "my_func"
2. 调用函数 other_func,打印出 "other_func"
3. other_func函数遇到了return 10,结束函数,并把10这个值返回
4. 函数 my_func 接收到了10,并返回。实际就是print(10)
"""
三、lambda 匿名函数
g = lambda: 1 # 函数体赋值给了变量g
print(g) # 返回内存地址。结果:<function <lambda> at 0x........>
print(g()) # 调用,就像调用函数一样。结果:1
g = lambda x : x + 1
# x是参数,x + 1 相当于 return (x + 1)
# 运行结果:2
小练习:
(1).找到1-100内的质数,结束之后打印“搜索结束”.
(质数:只能被1和自己整除,如2,只有除以1和2才能整除)
"""
思路:
先判断一个数是不是质数 ,
n = 7,那么就是 1 2 3 4 5 6 7 都要逐个除一下,除了1和自身,能整除就不是质数。
7的时候,只需要 2 3 4 5 6 都除一下,都不能整除,那么7就是质数。
""" li = []
"""
range(2,2) 2取不到,返回的是一个空列表。
当list中的元素被取完了,迭代完了,就是空列表了。这里相当于正常结束循环了。所以执行else了
"""
for i in range(2, 101):
for j in range(2, i): # 不能i+1,不然自己能整除自己,就被下面break了
if i % j == 0:
break
else:
li.append(i)
else:
print("搜索结束") print(li) """
运行结果:
搜索结束
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
"""
(2).定义一个函数,能够输入字典和元组。将字典的值(value) 和 元组的值交换,交换结束后,打印并且返回 字典和元组。
tu = (4, 5, 6)
dic = {'a': 1, 'b': 2, 'c': 3} # *args把接收到的参数,包装成元素
# **kwargs把接收到的参数,包装成字典 def dic_tu(dic, tu):
i = 0
li = list(tu)
for key in dic.keys(): # 取出所有keys,遍历所有keys
# temp = dic[key] # 先取出值,不然下面赋值后,再从字典取值就一样的值了
# dic[key] = li[i]
# li[i] = temp
# i += 1 dic[key], li[i] = li[i], dic[key] # 同理 a,b = b,a
i += 1 """
如果tu里面元素多了,也不受影响。只会交换前面三个,后面不会变。
因为字典中的key遍历完了,就结束了。
字典长于tu就有问题了,当第三次遍历后,i的值超出tu的长度了,会有IndexError
""" print(tuple(li))
print(dic) dic_tu(dic, tu)
Python 基础函数的更多相关文章
- python基础——函数的参数
python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...
- python基础—函数嵌套与闭包
python基础-函数嵌套与闭包 1.名称空间与作用域 1 名称空间分为: 1 内置名称空间 内置在解释器中的名称 2 全局名称空间 顶头写的名称 3 局部名称空间 2 找一个名称的查找顺序: ...
- python基础—函数装饰器
python基础-函数装饰器 1.什么是装饰器 装饰器本质上是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能. 装饰器的返回值是也是一个函数对象. 装饰器经常用于有切 ...
- Python基础-函数参数
Python基础-函数参数 写在前面 如非特别说明,下文均基于Python3 摘要 本文详细介绍了函数的各种形参类型,包括位置参数,默认参数值,关键字参数,任意参数列表,强制关键字参数:也介绍了调用函 ...
- python基础,函数,面向对象,模块练习
---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? # [] {} () None 0 2,位和字节的关系? # ...
- 第三章:Python基础の函数和文件操作实战
本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...
- Python基础-函数篇
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 函数与函数式编程 1.面向对象: 华山派-- ...
- python基础——函数
1.内置函数的调用: 可以在官方网站查找内置函数及说明,也可以通过help(abs)函数查看相应的信息. https://docs.python.org/3/library/functions.htm ...
- Python基础(函数,函数的定义,函数的调用,函数的参数,递归函数)
1.函数 我们知道圆的面积计算公式为: S = πr2 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需要计算3个不同大小的圆的面积: r1 = 12.34 r2 = 9.08 r3 = ...
- Python 全栈开发四 python基础 函数
一.函数的基本语法和特性 函数的定义 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的.函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数 ...
随机推荐
- [Functional Programming] Draw Items from One JavaScript Array to Another using a Pair ADT
We want to be able to pick nine random cards from an array of twelve cards, but can run into problem ...
- 【DP】【单调队列】【NOI2005】瑰丽华尔兹
340. [NOI2005] 瑰丽华尔兹 ★★★ 输入文件:adv1900.in 输出文件:adv1900.out 简单对照 时间限制:1 s 内存限制:128 MB [任务描写叙述] 你跳过华尔兹吗 ...
- Digg工程师讲述Digg背后的技术
虽然最近业绩有所下滑,也出现了一些技术故障,但Digg作为首屈一指的社会化新闻网站,其背后的技术还是值得一探,Digg工程师 Dave Beckett 在今年4月份写一篇名为<How Digg ...
- css - border-radius
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C/C++ linux下光标定位和清屏函数
printf("\033[47;31mhello world\033[5m"); 47是字背景颜色, 31是字体的颜色, hello world是字符串. 后面的\033[5m是 ...
- JQuery实现ajax跨域
AJAX 的出现使得网页可以通过在后台与服务器进行少量数据交换,实现网页的局部刷新.但是出于安全的考虑,ajax不允许跨域通信.如果尝试从不同的域请求数据,就会出现错误.如果能控制数据驻留的远程服务器 ...
- OA项目之权限设计②
1.接着昨天的今天到了设计怎样成功的实现权限分配的功能,首先我们看下这些功能的过程例如以下图: 首先是从user的list页面看到设置权限的button,点击进去进入设置权限的页面 进入设置权限页面, ...
- C++语言基础(16)-string类
使用 string 类需要包含头文件<string>,下面的例子介绍了几种定义 string 变量(对象)的方法: #include <iostream> #include & ...
- BAT-使用BAT方法设置IP地址
::------以下为批处理文件内容---- @echo off ::set slection1= set/p slection1=请输入IP地址: netsh interface ip set ad ...
- SVN各种错误提示产生原因及处理方法大全(转)
SVN各种错误提示产生原因及处理方法大全 1. svn: Server sent unexpected return value (500 Internal Server Error) in resp ...