python 函数传参练习 全局变量与局部变量 的理解

额 还是继续抄一边NLP第二条:

2.一个人不能控制另外一个人

  一个人不能改变另外一个人,一个人只能改变自己。

每个人的信念,价值观,规条系统只对本人有效,不应强求别人接守。

改变自己,别人才会有可能改变。

一个人不能推动另外一个人,每个人都只可以自己推动自己。

找出对方的价值观,创造,增大或转移对方在乎的价值,对方便会产生推动自己的行为。

一个人因此不能“教导”另外一个人,一个人只能引导另外一个人取学习。

因此一个人不能希望另外一个人放弃自己的一套信念,价值观和规条系统,而去接受另外的一套。

好的动机只给一个人取去做某一件事的原因,但是不能给他控制别人,或使事情恰如他所愿发生的权利。

不强迫别人跟随自己的一套信念,价值观和规条,别人便不会抗拒。

同样的,我们只能自己推动自己。

唉,还有点儿看不懂。。。。。



先来几个Pycharm的快捷键 炒鸡好用!!!

Ctrl + 鼠标左键 可以来回看函数调用

Shift + Enter 快速换行

Ctrl + d 复制一行

Ctrl +y 删除一行

Ctrl + / 注释一行或所选多行

Shift + Tab  所选多行后退一个缩进

函数的三大性质:减少重复代码  使程序变得可扩展 使程序变得易维护

三大编程方式:面向对象方法(Python)      面向过程方法(C)   函数式编程(Erlang)

核心                        类(class)                   无返回值函数             有返回值函数

草稿如下。。。

 1 #!usr/bin/env/ python
 2 # -*- coding:utf-8 -*-
 3 # Author: XiaoFeng
 4
 5 a = 1, 2, 3    # 这样赋值,结果是元组输出 理解这点很关键 下面都得用!!!
 6 print(a)
 7 print("-" * 50)
 8
 9
10 def test():   # 这是无参函数 也叫面向过程
11     print("呀哈哈哈哈")
12     # 没有return 所以也叫面向过程
13
14
15 t =  test()
16 print(t)  # 返回空
17 print("-" * 50)
18
19
20 def test0():
21     print("呀哈哈哈哈")
22     return 1, "a", ["list"], {"ket": "value"}
23 # 啥都能返回  以元组打包的形式返回
24
25
26 t = test0()
27 print(t)
28 print("-" * 50)
29
30
31 def test1(x, y, z):  # x,y,z是位置参数  赋值与实参位置有关
32     print(x)
33     print(y)
34     print(z)
35     return "test"    # 有返回值 即为函数式编程  只有一个数据的时候就不打包了
36
37
38 t2 = test1(1, 2, 3)  # 第一种输入方式 按顺序赋值
39 print(t2)
40 print("-" * 50)
41 t3 = test1(y=1, x=2, z=3)  # 关键字赋值 想咋输咋输,不用在乎顺序
42 print("-" * 50)
43 # t4 = test2(y=1,2,3) 这就不对  这样写y现在是元组了
44 t5 = test1(1, z=2, y=3)  # 这样混着用,
45 print("-" * 50)
46 # t5 = test2(z=2, 1, y=3)   这就不行 那不就是z 变成元组了么
47 # 所以想混着用,那就得把关键字放后面,前面的按顺序
48
49
50 def test2(x, y=1):  # 默认形参
51     print(x)
52     print(y)
53
54
55 test2(2)      # 默认形参可不传值给他
56 test2(2, y=2)  # 以关键字赋值的方式改默认
57 test2(2, 2)    # 这样也可以。。
58 print("-" * 50)
59
60
61 def test3(x, *args, y=0):   # 传参数组  想传几个就传几个 然后以元组方式打包起来
62     print(x)          # 按位置传值 相对应的位置就传给位置参数
63     print(y)
64     print(args)
65
66
67 test3(1, 3, 4, "5", 9, y=1)  # 只要用关键字赋值,那就就必须放在最后面 原因在最上面
68 print("-" * 50)
69
70
71 def test4(x, y=0, **kwargs):  # 也是传参数组,不过是用字典包起来
72     print(x)
73     print(y)
74     print(kwargs)    # 传参时用关键字赋值,以关键字作key
75
76
77 test4(2, y=3, name="xiaofeng", age=20)  # 注意字典的key不要与默认的形参重名

然后是全局变量,局部变量的区分 草稿如下。。。

 1 #!usr/bin/env/ python
 2 # -*- coding:utf-8 -*-
 3 # Author: XiaoFeng
 4
 5 global_x = 1    # 定义全局变量最好加个global 在最上面定义
 6 # 事实证明这也不过是个变量,是可以改的 但是咱不该他
 7
 8
 9 def test():
10     x = 3       # 局部变量  只在函数内起作用,函数结束就没了
11     print(x)
12     print(global_x)
13
14
15 test()
16 print(global_x)
17
18 # 递归函数
19
20
21 def test1(n):
22     if n > 0:
23         print(n)
24         return test1(int(n/2))
25
26
27 test1(20)
28
29
30 def test2(a, b, f):   # 高级函数  就是把函数名传到函数里用。。。这是要干啥
31     z = f(a) - f(b)
32     print(z)
33
34
35 test2(4, -8, abs)

作业如下。。。。。。。。真不会写 头大

 1 #!usr/bin/env/ python
 2 # -*- coding:utf-8 -*-
 3 # Author: XiaoFeng
 4
 5
 6 def print_list():
 7     for index, i in enumerate(list1):
 8         print(index, i)
 9
10
11 def search(find_str):
12     with open("config_test", "r", encoding="utf-8") as f:
13         for line in f:
14             if find_str == line:
15                 line = next(f)
16                 print(line)
17                 # while "serve" in line:
18                 #     line = next(f)
19                 #     print(line)
20
21 """
22 def add():
23     with open("config_test", "a+", encoding="utf-8") as f, 24             open("config_test1", "w+", encoding="utf-8") as f2:
25         for line in f:
26             if arg[""] == line:
27                 line = next(f)
28                 print(line)
29             f2.write(line)
30 """
31
32
33 list1 = ["search", "add", "update", "delete"]
34 while True:
35     choice = input("请输入操作选择:")
36     if choice == "0":
37         find_str0 = "backend "+input("请输入您要查询的内容:") + "\n"
38         search(find_str0)
39     # if choice == "1":
40     #     arg = eval(input("请输入您要写入的内容:"))
41     #     add(arg)

原文地址:https://www.cnblogs.com/xf1262048067/p/10575664.html

时间: 2024-11-06 14:14:28

python 函数传参练习 全局变量与局部变量 的理解的相关文章

python函数传参是传值还是传引用?

首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传递. 值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本.值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值. 引用传递(pass-

python函数 传参的多种方式 解读

1.函数的参数在哪里定义 在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号, 隔开 案列: 2.带参数的函数调用: 函数定义了参数,那么调用函数的时候就需要传入参数 上面的案列中,我们定义函数的时候在函数名后面的括号里定义的参数叫做形参. 而我们调用函数的时候传入的参数叫做实参,形参是用来接收实参的. 参数的分类 上面我们说了形参和实参,那么形参和实参在在定义和调用的时候,根据形式不同有可以分为几类. 1.根据实参进行分类 实参:位

python函数--传参

一.位置参数 二.关键字参数 三.默认参数 四.任意数量的位置参数: 1. *x 2. 传入的多个参数,最终合并成一个元组 3. 之后的参数必须用关键字参数 五.任意数量的关键字参数 1. **x 2. 传入的多个关键字参数,最终合并成一个字典数据. 六.使用*来表示一个函数不接受一个变量长度的参数, *后面的参数仍然使用关键字进行传递 七.排序: keyword-only参数必须在*args之后,**args之前如下代码: http://blog.csdn.net/qbw2010/articl

python中给函数传参是传值还是传引用

首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传递. 值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本.值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值. 引用传递(pass-

关于函数传参--传指针,传引用

今天和同学讨论到指针和引用的传递问题,有些想法从推理上讲是正确的,但是因为是推理,说出自己观点的时候不是那么有底气,本着实践是检验真理的唯一标准的原则,在电脑上敲了几段代码,验证了推理的正确性. 先上代码,再分析. 代码1: void Swap0(int a1,int b1){ int temp; temp=a1; a1=b1; b1=temp; } void Swap1(int *a1,int *b1){ //交换地址 int *temp; temp=a1; a1=b1; b1=a1; } v

Date对象,封闭空间,函数传参和封装,获取非行间样式,字符串操作

一.Date对象 1. 获取 oDate.getFullYear() 获取年份 oDate.getMonth()+1  获取月份( 0-11)----->1-12 oDate.getDate()  获取日 1-31 oDate.getHours() 获取小时 oDate.getMinutes() 获取分 oDate.getSeconds() 获取秒 oDate.getMilliseconds();   //毫秒 oDate.getDay() 获取星期几 0-6     0:星期天 例:数码时钟

JS——变量和函数的预解析、匿名函数、函数传参、return

JS解析过程分为两个阶段:编译阶段.执行阶段.在编译阶段会将函数function的声明和定义都提前,而将变量var的声明提前,并将var定义的变量赋值为undefined. 匿名函数: window.onload = function () { var oBtn01 = document.getElementById('btn01'); var oBtn02 = document.getElementById('btn02'); //注意这里不能有括号,skin01()的话就立刻执行了哦,所以不

函数传参课后练习—JS学习笔记2015-6-7(第51天)

老师的课后作业练习,看代码(最贵价格那个没有实现): 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>J函数传参——商品价格计算</title> 6 </head> 7 8 <body> 9

数据类型回顾——函数传参之商品价格计算—JS学习笔记2015-6-6(第50天)

经常我们可以看到很多网站会有多个相同功能的模块,比如淘宝首页的轮播,比如新浪首页的tab切换: 那么可以看出这些地方在HTML结构上是类似的,所以我们可以考虑用一块功能代码去实现,而不同是仅仅是传递参数的不同: 例如: 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"