xml地图|网站地图|网站标签 [设为首页] [加入收藏]
Python之函数总结,一封来自
分类:编程

信号的概念

信号(signal)--     进程之间通讯的方式,是一种软件中断。一个进程一旦接收到信号就会打断原来的程序执行流程来处理信号。

几个常用信号:

SIGINT     终止进程  中断进程  (control+c)

SIGTERM   终止进程     软件终止信号

SIGKILL   终止进程     杀死进程

SIGALRM 闹钟信号

 

 

一、函数

进程结束信号 SIGTERM和SIGKILL的区别

SIGTERM比较友好,进程能捕捉这个信号,根据您的需要来关闭程序。在关闭程序之前,您可以结束打开的记录文件和完成正在做的任务。在某些情况下,假如进程正在进行作业而且不能中断,那么进程可以忽略这个SIGTERM信号。

对于SIGKILL信号,进程是不能忽略的。这是一个 “我不管您在做什么,立刻停止”的信号。假如您发送SIGKILL信号给进程,Linux就将进程停止在那里。

 

图片 1

1、为什么要用函数

发送信号一般有两种原因:

1(被动式)  内核检测到一个系统事件.例如子进程退出会像父进程发送SIGCHLD信号.键盘按下control+c会发送SIGINT信号

2(主动式)  通过系统调用kill来向指定进程发送信号

 

 

操作系统规定了进程收到信号以后的默认行为

但是,我们可以通过绑定信号处理函数来修改进程收到信号以后的行为

有两个信号是不可更改的SIGTOP和SIGKILL

绑定信号处理函数:

 

  1.  

    import os

  2.  

    import signal

  3.  

    from time import sleep

  4.  

     

  5.  

    def onsignal_term(a,b):

  1.  

    print '收到SIGTERM信号'

  2.  

     

  3.  

    #这里是绑定信号处理函数,将SIGTERM绑定在函数onsignal_term上面

  1.  

    signal.signal(signal.SIGTERM,onsignal_term)

  2.  

     

  3.  

    def onsignal_usr1(a,b):

  1.  

    print '收到SIGUSR1信号'

  2.  

    #这里是绑定信号处理函数,将SIGUSR1绑定在函数onsignal_term上面

  1.  

    signal.signal(signal.SIGUSR1,onsignal_usr1)

  2.  

     

  3.  

    while 1:

  1.  

    print '我的进程id是',os.getpid()

  2.  

    sleep(10)

 

运行该程序。然后通过另外一个进程来发送信号。

发送消息的代码如下:

  1.  

    import os

  2.  

    import signal

  3.  

     

  4.  

    #发送信号,16175是前面那个绑定信号处理函数的pid,需要自行修改

  1.  

    os.kill(16175,signal.SIGTERM)

  2.  

    #发送信号,16175是前面那个绑定信号处理函数的pid,需要自行修改

  1.  

    os.kill(16175,signal.SIGUSR1)

不论你是对Python初出茅庐,还是如指诸掌,这篇文章对你的收获总归还是有的啦,可能只是程度的问题。好了不扯远了,来说正题,下面在分享这套体系前还是要让Python做一下“自我介绍”。

    a、避免代码重用

使用信号需要特别注意的地方:

如果一个进程收到一个SIGUSR1信号,然后执行信号绑定函数,第二个SIGUSR2信号又来了,第一个信号没有被处理完毕的话,第二个信号就会丢弃。

所以,尽量不要在多线程中使用信号。

这个不妥,测试没发现有信号丢失

例子演示:

接收信号的程序,你会发现如果有另外一端使用多线程向这个进程发送信号,会遗漏一些信号。

 

1.Python是:是一种面向对象的解释型计算机程序设计语言。来自荷兰,面向世界。

    b、提高代码的可读性

2.Python优点:

2、函数的调用

♢与其他编程语言相比,它提供了丰富的数据类型和更易于阅读的语法

   返回值=函数名(参数1,参数2)

♢它是一种独立于平台的脚本语言,可以完全访问操作系统API

   函数定义---返回值

♢与其他编程语言相比,它允许更多的运行时灵活性

   关键字:return

♢它包括Perl和Awk的基本文本操作工具

3、return的作用:

♢Python中的模块可能有一个或多个类和自由函数

    a、结束函数的执行

♢Pythons中的库与Linux,MacIntosh和Windows是跨平台兼容的

    b、返回要返回的值

♢为了构建大型应用程序,Python可以编译为字节码

4、返回值的两种情况

♢Python支持功能和结构化编程以及OOP

    a、返回值为None

♢它支持交互模式,允许交互测试和调试代码片段

图片 2图片 3

♢在Python中,由于没有编译步骤,编辑,调试和测试很快。

def mylen():
    """计算s1的长度"""
    s1 = "hello world"
    length = 0
    for i in s1:
        length = length+1
    print(length)


str_len = mylen()
print(str_len)

3.Python发展:web全栈工程师,人工智能工程师,爬虫开发工程师,Python开发工程师,数据分析工程师,游戏开发,测试自动化,互联网信息安全,算法工程师,搜索引擎工程师,ios 安卓开发,系统运维工程师。

不写return

下面我将把这套Python体系分为四个模块来分享给你。

图片 4图片 5

 

def ret():
    print(111)
    return
    print(222)

re = ret()
print(re)

一、python网络爬虫

只写return

首先给个大家简单的介绍一下爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。

图片 6图片 7

Python爬虫能可从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。

def ret():
    print(111)
    return None
    print(222)

re = ret()
print(re)

为了让大家赏心悦目,我做了下面这张图来供大家学习。

return None

 

    b、返回值不为None

图片 8

         1、返回一个值

 

图片 9图片 10

二、Python人工智能

def mylen():
    """计算s1的长度"""
    s1 = "hello world"
    length = 0
    for i in s1:
        length = length+1
    return length

str_len = mylen()
print(str_len)

  这个模块我相信也是大家会比较感兴趣的一个,相信不用我介绍大家也会感受到它的普及和重要,说实话目前薪资最高、最受求职者追捧的岗位也毫无疑问是人工智能,如果你觉得和你没什么联系不妨看看你手里的智能手机。下面还是先给大家系统介绍一下,都是精华啊。

返回一个值

人工智能(Artificial Intelligence):英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。

          2、返回多个值

 

5、函数的调用----接受返回值

图片 11

   a、返回值为None    不接受

 

   b、返回值不为None

三、Python WEB开发

       1、返回一个值

WEB:(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。

               用一个变量接受

Web前端: 顾名思义是来做Web的前端的。我们这里所说的前端泛指Web前端,也就是在Web应用中用户可以看得见碰得着的东西。包括Web页面的结构、Web的外观视觉表现以及Web层面的交互实现。

       2、返回多个值

Web后端:后端更多的是与数据库进行交互以处理相应的业务逻辑。需要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等。

               a、用一个变量接受,接受的结果是一个元祖

 

               b、有多少个返回值就用多少个值接受

图片 12

6、参数

四、Python自动化运维

    a、参数----站在定义函数的角度

运维自动化:是一组将静态的设备结构转化为根据IT服务需求动态弹性响应的策略,目的就是实现IT运维的质量,降低成本。可以说自动化一定是IT运维最高层面的重要属性之一,但不是全部。

         1、位置参数

大多数运维团队面临的最核心问题在于——如何用更少的资源完成更多工作。自动化运维则是这一问题的理想解决方案,而它的5大好处:降低成本 提高生产力  高可用  更可靠  性能优化。

         2、默认参数

好了,这已经是最后一个模块了,如果想要一起学习交流的小伙伴可以进进群讨论:425851955或者需要学习资料的也欢迎。

         3、动态参数

 

              a、*args

图片 13

              b、**kwargs

这一套体系到这里就分享完了,希望会对想要学Python的小伙伴有所帮助,如果你是零基础想要学Python的也不要着急,你可以先去试着了解到底什么是Python,前期学习可能会比较吃力,毕竟你也是刚刚才接触到,学习都是是要循序渐进的,重点是选择一个适合自己的学习方式,最后祝愿大家能马到成功!如果还有什么不懂的问题需要解答的,想要找人一起交流的都欢迎大家进来:425851955 有需要学习资料的小伙伴我也非常乐意提供给大家。

顺序:位置参数、*args、默认参数、**kwargs

     b、参数----站在调用函数的角度上

         1、按照位置传参

         2、按照关键字传参

         3、动态传参*tup,**dic

7、参数分为形参和实参   

     a、实参:调用函数的时候传入的参数

8、位置参数

     a、位置参数必须传值

图片 14图片 15

def aaa(a,b):
    print(a,b)
aaa(1,2)

位置参数

9、默认参数

     a、默认参数可以不传值

图片 16图片 17

def bbb(x=10):
    print(x)
 bbb()     #x = 10
 bbb(20)  #x = 20

默认参数

10、动态参数

图片 18图片 19

def ccc(*args):#1,2,3,4,5
    print(args)

ccc(1,2,3,4,5)#按位置传参数

t = (1,2,3,4,5)
ccc(t)  ((1, 2, 3, 4, 5),)
ccc(*t)  (1, 2, 3, 4, 5)
复制代码

动态参数

图片 20图片 21

def ddd(**kwargs):
    print(kwargs)

 ddd(k = 'a',j = 'b')#按关键字传参数

动态参数+关键字参数

图片 22图片 23

def eee(*args,**kwargs):
    print(args,kwargs)

 eee(12,123)

动态,先按位置参数,再按关键字参数

本文由澳门新葡亰手机版发布于编程,转载请注明出处:Python之函数总结,一封来自

上一篇:8空格惹的祸,字符串要点 下一篇:没有了
猜你喜欢
热门排行
精彩图文